游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3478|回复: 0

关于 undefined reference to `vtable for 。。。。。。。。’的错误

[复制链接]

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2013-4-5 14:10:13 | 显示全部楼层 |阅读模式
                                        最近碰上这个问题,无论GNU C/C++ 4.7.2还是LLVM Clang 3.2都会报,在网上查了许多资料,基本内容一样,但也基本都没有真正命中这个错误的起因。
这句英文的本意是无法产生虚拟函数映射表,那么原因肯定就是有虚拟的函数不存在。但为什么会不存在?那当然是没有写了。
所以,解决的办法就是检测你报错的类中,是否真正的实现了所有在本类中定义的派生函数。如果仅在.h中定义,而没有在.cpp中实现,就会报这个错误。
举个例子,以及代码中,B类就会报如上错误。
class Base
{
virtual void func();
};
class A:public Base
{
//没有定义,使用基类的
};
class B:public Base
{
void func(); //定义了,但没有实现
};
                               

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-11-21 20:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表