我一直在尝试创建一个继承的类(在DLL中,但这不一定相关)。但是我得到了一个符号查找错误(一个未解析的外部)。
#include <iostream>
class Foo {
public:
virtual void print() = 0;
virtual ~Foo() = 0;
};
class Bar : public Foo {
public:
Bar() { std::cout << "Bar()\n"; }
virtual void print() { std::cout << "Bar->print\n"; }
virtual ~Bar() { std::cout << "~Bar()\n"; }
};
int main() {
Foo *b = new Bar();
b->print();
delete b;
return 0;
}
编译后,我收到以下错误:
bla.cpp :(。text._ZN3BarC2Ev [_ZN3BarC5Ev] + 0x47):未定义的引用`Foo :: ~Foo()
问题在于你不能拥有纯虚拟析构函数(仍然不清楚为什么会这样)。所以改变这个:
virtual ~Foo() = 0;
到此:
virtual ~Foo() {}
修复一切。感谢用户,我',为解决方案
答案 0 :(得分:1)
更改virtual~LibBase()= 0; to virtual~LibBase(){}在Window(MinGW)上使用输出:
库
打印
〜库
离开主要