为每个抽象函数定义主体后,对VTable的不确定引用

Undefined reference to vtable after defining body for every abstract function

本文关键字:VTable 不确定 引用 抽象函数 定义 主体      更新时间:2023-10-16

我有代码:testone.h:

class testOne {
    virtual void a() = 0;
    virtual void b() = 0;
};

testtwo.h:

#include "testOne.h"
class testTwo : public testOne{
    void a() override;
    void b() override;
};

testtwo.cpp:

#include "testTwo.h"
    void testTwo::a() {
    }
    void testTwo::b() {
    }

我为每个抽象功能提供了主体,但是我一直遇到此错误:

对``testtwo'vtable''

的不确定引用

为什么会发生这种情况?我该如何解决?

感谢您的帮助!

//编辑

我是这样使用的:

int main(){
  testTwo *t = new testTwo();
  return 0;
}

makefile:

cmake_minimum_required(VERSION 2.8)
SET( EX_PLATFORM 64 )
SET( EX_PLATFORM_NAME "x64" )
if (UNIX) 
    add_definitions(
        -std=c++17 -g -Wall
    )
endif (UNIX)
include_directories(${CMAKE_SOURCE_DIR})
add_subdirectory(backend)
add_subdirectory(common)
add_subdirectory(optimization)
add_subdirectory(common/ir)
add_subdirectory(tc)

此代码使用GCC 8.3.0编译和链接(在使用#include "testTwo.h"中包含丢失的标头。

$ c++ main.c testTwo.cpp -o main

您的cmake文件实际上与此处的简单示例并不相关。我会开始在那里寻找。