我收到了这个奇怪的链接器错误:
Error 1 error LNK2019: unresolved external symbol "public: virtual __thiscall Data::~Data(void)" (??1Data@@UAE@XZ) referenced in function "public: virtual __thiscall Job::~Job(void)" (??1Job@@UAE@XZ) C:\...\Job.obj
Error 2 error LNK2019: unresolved external symbol "public: __thiscall List::DataNode::DataNode(class List::DataNode const &)" (??0DataNode@List@@QAE@ABV01@@Z) referenced in function "public: __thiscall List::List(class List const *)" (??0List@@QAE@PBV0@@Z) C:\...\List.obj
从第一个错误描述中,它可能与析构函数有关。
我有一个带有纯虚析构函数的空和抽象数据类:
virtual ~Data()=0;
和一个派生自数据的Job,带有一个简单的析构函数实现:
Job::~Job()
{
}
你能发现问题吗?我该如何解决? 谢谢!
答案 0 :(得分:5)
您需要为纯虚析构函数提供定义。
C ++ 03 12.4析构函数
第7段:
析构函数可以声明为虚拟(10.3)或纯虚拟(10.4);如果在程序中创建了该类或任何派生类的任何对象,则应定义析构函数。如果一个类有一个带有虚析构函数的基类,那么它的析构函数(无论是用户还是隐式声明)都是虚拟的。