MENU

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析构函数添加{},但更重要在排查问题的过程,写个文章记录一下。

返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码