项目代码编译时,经常出现类似错误: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(){}
}
本文详细介绍了在项目代码编译时遇到类定义与虚函数未实现导致的编译错误问题,并提供了解决方案。包括检查构造函数、析构函数的实现,确保基类虚函数在子类中被正确实现,避免未定义引用错误。
1707

被折叠的 条评论
为什么被折叠?



