तो, मेरे पास एक अमूर्त वर्ग Panel
है और इसका कार्यान्वयन MyPanel
है। से कुलपति ++अनसुलझा बाहरी (अमूर्त वर्ग कन्स्ट्रक्टर/विनाशक)
error LNK2019: unresolved external symbol "public: virtual __thiscall Panel::~Panel(void)" ([email protected]@[email protected]) referenced in function "public: virtual __thiscall MyPanel::~MyPanel(void)" ([email protected]@[email protected]) mypanel.obj
error LNK2019: unresolved external symbol "public: __thiscall Panel::Panel(class QWidget *)" ([email protected]@[email protected]@@@Z) referenced in function "public: __thiscall MyPanel::MyPanel(class QWidget *)" ([email protected]@[email protected]@@@Z) mypanel.obj
क्यों मैं इस लिंकर त्रुटि हो रही है निर्माता/नाशक के लिए
class Panel : public QWidget
{
public:
Panel(QWidget* parent = 0) = 0;
virtual ~Panel() = 0;
// but wait, there's more!!
};
class MyPanel : public Panel
{
public:
MyPanel(QWidget* parent = 0);
~MyPanel() {}; // nothing to do here
};
MyPanel::MyPanel(QWidget* parent) :
Panel(parent)
{
// you must construct additional pylons
}
मैं हो रही है लिंकर त्रुटियों: वे कुछ ऐसा दिखाई?
--- उत्तर ---
class Panel : public QWidget
{
public:
Panel(QWidget* parent = 0) : QWidget(parent) {};
virtual ~Panel() {};
// but wait, there's more!!
};
मैंने सोचा कि मैं दोपहर के भोजन से पहले इस कोशिश की थी। नतीजा मेरा गलत होना निकला।
ऐसा लगता है कि आपके पास कुछ टाइपो हैं। क्या आप स्पष्ट कर सकते हो? कक्षा घोषणाओं को समाप्त करने की आवश्यकता है; उदाहरण के लिए, कक्षा XXX {}; आपके पास वर्चुअल कन्स्ट्रक्टर की तरह दिखता है लेकिन यह C++ – maccullt
में मान्य नहीं है मेरे टाइपो को सही और सही समाधान जोड़ा गया है। –
आपके "उत्तर" में आपको स्पष्ट रूप से इंगित करना चाहिए कि आपने क्या बदला है (मूल रूप से {} के माध्यम से खाली कार्यान्वयन प्रदान करते हैं)। अन्यथा यह आपके कोड के नमूने की तुलना करने और समझने के लिए पाठक को एक अभ्यास के रूप में छोड़ दिया गया है। – User