如果一个父类有一个纯虚析构函数,我该如何正确地继承它?我有一个头文件(由IBM Rational Rose生成),看起来像这样:
现在我想要实现这个纯抽象类,也就是说:
无论我尝试什么(例如在MyClassImpl中定义析构函数;虚拟/非虚拟),我都会收到以下错误消息:
class MyClass{
protected:
inline MyClass() {};
MyClass(const MyClass&);
MyClass& operator=(const MyClass&);
public:
inline virtual ~MyClass() = 0;
virtual void someMethod() = 0;
};
现在我想要实现这个纯抽象类,也就是说:
class MyClassImpl : public MyClass {
public:
MyClassImpl(){}
virtual void someMethod() {}
};
int main(int argc, char*argv[]) {
MyClassImpl impl;
return 0;
}
无论我尝试什么(例如在MyClassImpl中定义析构函数;虚拟/非虚拟),我都会收到以下错误消息:
error LNK2019: unresolved external symbol "public: virtual __thiscall MyClass::~MyClass(void)" (??1MyClass@@UAE@XZ) referenced in function "public: virtual __thiscall MyClassImpl::~MyClassImpl(void)" (??1MyClassImpl@@UAE@XZ)
。是否有任何方法可以在不改变MyClass的情况下实现MyClassImpl?