Мне предоставлен файл заголовка, который включает объявление базового класса.В объявлении класса находится виртуальный деструктор, который был определен.Исходя из этого, нам нужно кодировать файл реализации (.cpp).Код выглядит следующим образом в заголовочном файле:
class MyClass
{
private: ...
protected: ...
public:
MyClass (double aBaseValue = 0.0);
virtual ~MyClass() { }
...
};
Я борюсь с тем, какой код требуется в файле реализации (.cpp) для деструктора.Я подумал, что, поскольку я определил его в объявлении класса, мне не нужно определять его снова в файле реализации, но если я его опущу, то получаю следующую ошибку в объявлении класса при наведении курсора на мой виртуальный деструктор.в определении конструктора в моем файле .cpp.
неопределенная ссылка на `vtable for MyClass '
SO, если я вместо этого добавлю следующий код в исходный файл MyClass :: ~ MyClass (); примерно так
#include "MyClass.h"
MyClass::MyClass(double aBaseValue)
{
this->fBaseValue = aBaseValue;
{
MyClass::~MyClass();
тогда первые две ошибки исчезают, но теперь я получаю сообщение об ошибке кода деструктора в файле .cpp
объявление 'virtual MyClass :: ~ MyClass ()' вне класса не является определением [-fpermissive]
Из того, что я могу понять, вышеупомянутая ошибка говоритмне, что я в основном пытаюсь объявить деструктор снова, так как нет фигурных скобок ... но если я поставлю фигурные скобки, получит ошибку, сообщающую, что существует переопределение деструктора.
Я не уверен, какие у меня есть другие варианты.Может кто-нибудь помочь мне понять, как я должен реализовывать виртуальный деструктор как для объявления класса, так и для реализации?Благодарю.