C ++中的LNK2019错误

时间:2012-05-31 10:40:12

标签: c++

我收到了这个奇怪的链接器错误:

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()
{
}

你能发现问题吗?我该如何解决? 谢谢!

1 个答案:

答案 0 :(得分:5)

您需要为纯虚析构函数提供定义。

C ++ 03 12.4析构函数
第7段:

  

析构函数可以声明为虚拟(10.3)或纯虚拟(10.4);如果在程序中创建了该类或任何派生类的任何对象,则应定义析构函数。如果一个类有一个带有虚析构函数的基类,那么它的析构函数(无论是用户还是隐式声明)都是虚拟的。