来源:https://blog.youkuaiyun.com/youngstonep/article/details/48825239
项目代码编译时,经常出现类似错误:signleClientReadTest.o: In function ReplayTask::ReplayTask()': /home/ndsl/vdfs/test0922/trunk/build/test/DS/readTest/../../../../src/DS/Task/ReplayTask.h:28: undefined reference to
vtable for ReplayTask’
百度如下关键词“undefined reference to `vtable for”,大部分回答都是子类没有实现父类的纯虚函数,的确是这样的。
不过另外的一些情形是,实验室的基类代码中在某个不起眼的地方调用了父类的虚函数(不是纯虚函数的虚函数),然后子类代码中又没有实现它,也会报此类错误。
子类中的构造函数和析构函数也要注意,必须要实现,至少加个{}。
子类构造函数要主动调用父类的构造函数。比如
class father
{
father(){};
~father(){};
}
class son: public father
{
son():
father()
{}
~son(){}
}