1

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

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

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

4

1 回答 1

5

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

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

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

于 2012-05-31T10:41:55.313 回答