C语言unprinctable错误,c ++缺少vtable错误

我得到一个非常奇怪的错误,与给定的类构造函数和析构函数缺少vtable有关。 请帮我解决这个问题。

架构i386的未定义符号:

"vtable for A", referenced from:

A::A() in A.o

A::~MissionController() in A.o

NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.

ld: symbol(s) not found for architecture i386

clang: error: linker command failed with exit code 1 (use -v to see invocation)

代码段;

.h文件:

class A: public B

public:

A();

~A();

};

.cpp文件..

A::A()

{

}

A::~A()

{

}

在课程结束时放了一个;

注意:缺少vtable通常意味着第一个非内联虚拟成员函数没有定义。

我已经做到了..这只是一个代码片段,所以错字。

我认为您的错误在您尚未发布的代码中。例如,在CCNode中定义了哪些虚拟功能

我看到这个错误,但在哪里解决这个问题。我在其他几个类中使用了类似的代码,但从未见过这种错误。

它不是因为CCNode,如果我删除即使我看到同样的错误。

正如编译器所说,可能缺少虚函数。我经常忘记包含纯虚析构函数的定义,这在纯虚析构函数的情况下实际上是必需的。

请发布MissionController的所有功能

任何类中都没有纯虚函数。

任何类都没有虚函数? CCNodes析构函数应该是虚拟的。如上所述,错误可能在您尚未发布的代码中。

@ user1908860,如果删除CCNode库,则无法获得此错误,因为如果没有虚函数,则类不需要vtable。因此,您没有显示真实的代码,或者您在更改代码后没有(重新)正确构建项目,或者您正在撒谎。

当我尝试覆盖非虚拟父方法时,我遇到了类似的错误。

啊!考虑到这一点,我想我得到了正在发生的事情。我打赌CCNode是属于其他人的代码。

您继承的任何虚函数在派生类中也是虚拟的......通常的做法是将析构函数设置为虚拟...您可能没有意识到析构函数是虚拟的。

此外,如果您使用其他人的头文件,但忘记链接到他们的目标文件,它可能会导致此错误,因为链接器将缺少CCNode的析构函数。

找到它,尝试样品,这里是一个例子。

class Shape{

public:

virtual int areas();

virtual void display();

virtual ~Shape(){};

};

编译器抱怨道

Undefined symbols for architecture x86_64:

"typeinfo for Shape", referenced from:

typeinfo for trian in main_file.o

"vtable for Shape", referenced from:

Shape::Shape() in main_file.o

NOTE: a missing vtable usually means the first non-inline virtual member      function has no definition.

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

make: *** [cpp_tries] Error 1enter code here

修改为空或虚拟函数旁边的{}内的任何内联内容

class Shape{

public:

virtual int areas(){};

virtual void display(){};

virtual ~Shape(){};

};

基本上,它没有找到非内联虚函数的函数定义。

尝试将虚拟析构函数添加到您的类中。 CCNode可能包含一些虚拟方法,并且您的编译器无法应对它。

class MissionController: public CCNode

{

public:

MissionController();

virtual ~MissionController();

};

它是一些公共框架,我们在哪里可以看到CCNode类的定义?有关更多帮助,请参阅vtable for .. from compile error xcode或者http://www.parashift.com/c++-faq-lite/link-errs-missing-vtable.html。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值