У меня есть базовый класс Media и несколько производных классов, а именно DVD, Book и т.д. Базовый класс записывается как:
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);
};
Дело в том, что без деструктора GCC дает мне кучу предупреждений "класс имеет виртуальные функции, но не виртуальный деструктор", но все еще компилируется, и моя программа работает нормально. Теперь я хочу избавиться от этих раздражающих предупреждений, поэтому я удовлетворяю компилятору, добавляя виртуальный деструктор, результат: он не компилируется с ошибкой:
undefined ссылка на
Media::~Media()
Создание виртуального виртуального деструктора не решает проблему. Итак, что пошло не так?