C++中的LNK2019错误

nod*_*dwj 1 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
Run Code Online (Sandbox Code Playgroud)

从第一个错误描述中,它可能与析构函数有关.

我有一个带有纯虚析构函数的空和抽象数据类:

virtual ~Data()=0;
Run Code Online (Sandbox Code Playgroud)

和一个派生自数据的类,带有一个简单的析构函数实现:

Job::~Job()
{
}
Run Code Online (Sandbox Code Playgroud)

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

Alo*_*ave 5

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

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

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