undefined reference to `vtable for原因解决
前言
最近在开发编译C++新模块项目,犯了一个低级错误,基类中虚析构函数忘记给它添加实现体。看到这个错误联想到是虚函数中出来问题,先是在子类一直没有找到,后面细细发现问题出现在基类中。
问题定位以及解决
首先看存在问题的代码
// Test.h
class Test {
public:
Test(std::string name);
virtual ~Test();
private:
std::string username;
};
// Test.cpp
Test::Test(std::string name) :
username(name) {
}
Test
类的虚析构函数中没有函数体,导致编译可以通过,但是在链接的时候就会出现undefined reference to vtable
不能链接虚表。
解决方法很简单,在Test析构函数添加{}
,但更重要在排查问题的过程,写个文章记录一下。