Рассмотрим:
// in header.h
class A {
public:
virtual ~A() = 0;
};
class B : public A {
public:
~B() override {}
}
Компонент сообщает, что он не может решить:
внешний символ "public: virtual __thiscall A:: ~ A (void)" ссылка в функции "public: virtual __thiscall B:: ~ B (void)"
Я нахожу, что мне нужно написать определение A::~A()
.
Раньше я думал, что чистый виртуальный класс определяет интерфейс (объявление функции), и они не должны содержать определение функции. Должен ли я писать определения для всех виртуальных функций в чистом виртуальном базовом классе? Или мне просто нужно написать функцию деструктора?