This question already has answers here:
Undefined reference to vtable

(19 个回答)


1年前关闭。




我有一个 afporoills 类,它有助于在我们的内存管理模块中查找数据。 (不要问为什么这么奇怪的名字我不知道)
class afporoills{
    void** test(int pos);
};
void** afporoills::test(int pos){
    int x=(pos<<3)|1023*x;
    void** ret=(void**)x;
    if((int)ret%16) return this.test(pos+1);
    void* (*fp)(float, uint16__t)=x;
    ret=ret+(*fp)(1.0f, (uint16__t)pos);
    return ret;
}
int test(){
    afporoills afporoills14;
    return ((char*) (uint32_t) ((uint32_t) (void*) afporoills14.test(((((uint32_t)))((char*) (void*))1));

}

我不断得到

[链接器错误] 未定义对 afporoills 的 vtable 的引用

但我不知道什么是 vtable !!!我没有用过,为什么会有错误呢?

请帮助我,因为如果我不摆脱该错误,我将无法继续编写该类(class)。

我还需要做什么才能使 test 方法图灵完备?

最佳答案

您可能会收到此错误,因为您在基类中声明了一个虚方法并且未定义它,即基类中提供的虚函数没有函数体。

尝试给它一些虚拟的主体,然后编译它可能会起作用。我最近在一个类似的情况下遇到了这个错误,该情况通过提供定义得以解决。

关于c++ - 对 vtable 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5511973/

10-12 06:09