मैं एक आधार वर्ग मीडिया और कई व्युत्पन्न वर्ग, अर्थात् डीवीडी, पुस्तक, आदि ... है आधार वर्ग भी लिखा गया है:सी ++ "आभासी कार्यों, लेकिन कोई आभासी विनाशकर्ता"
class Media{
private:
int id;
string title;
int year;
public:
Media(){ id = year = 0; title = ""; }
Media(int _id, string _title, int _year): id(_id), title(_title), year(_year) {}
// virtual ~Media() = 0;
void changeID(int newID){ id = newID; }
virtual void print(ostream &out);
};
बात है : विनाशक के बिना, जीसीसी मुझे चेतावनी का एक गुच्छा देता है "कक्षा में वर्चुअल फ़ंक्शन हैं लेकिन गैर-वर्चुअल विनाशक" है, लेकिन अभी भी संकलित है और मेरा प्रोग्राम ठीक काम करता है। अब मैं उन कष्टप्रद चेतावनी से छुटकारा पाने के तो मैं एक आभासी नाशक जोड़कर संकलक को संतुष्ट करना चाहते हैं, परिणाम है: यह त्रुटि के साथ, संकलन नहीं करता है:
undefined reference to
Media::~Media()
नाशक शुद्ध आभासी बनाना नहीं है समस्या का समाधान। तो क्या गलत हो गया है?
आप पहली जगह में शुद्ध आभासी कन्स्ट्रक्टर क्यों चाहते हैं? एक खाली आभासी कन्स्ट्रक्टर बस अच्छी तरह से काम करता है (और यह गैर व्हाइटस्पेस वर्णों की संख्या के बराबर है) – hirschhornsalz
@ लचियनग्रिगोर मेरा मतलब यह नहीं था। मैं इसे आपके लिए दोहराता हूं: आप कक्षा मीडिया को सार क्यों बनाना चाहते हैं? – hirschhornsalz
@drhirsch आमतौर पर क्योंकि आप इसकी रचना को अस्वीकार करना चाहते हैं। शायद मीडिया प्रकार का एक वस्तु समझ में नहीं आता है। –