gpt4 book ai didi

c++ - 使用纯抽象析构函数从类继承

转载 作者:太空狗 更新时间:2023-10-29 19:48:05 26 4
gpt4 key购买 nike

如果父类有一个纯虚析构函数,我怎样才能正确地继承它?我有一个头文件(由 IBM Rational Rose 生成),如下所示:

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) 在函数 "public: virtual __thiscall MyClassImpl::~MyClassImpl(void)"(??1MyClassImpl@@UAE@XZ) 中引用

有没有什么方法可以在不更改 MyClass 的情况下实现 MyClassImpl

最佳答案

您必须定义析构函数,即使它是纯虚拟的(唯一的)。

添加

MyClass::~MyClass() {}

恰好在一个 .CPP 文件中。

(例如参见“纯虚拟析构函数”下的 http://en.cppreference.com/w/cpp/language/destructor。还有 Why do we need a pure virtual destructor in C++?。)

关于c++ - 使用纯抽象析构函数从类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33947827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com