c++中缺少虚函数表错误
c++ a missing vtable error
我得到了一个非常奇怪的错误,涉及到一个给定的类构造函数和析构函数缺少虚函数表。请帮我解决这个问题。
体系结构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()
{
}
标题>标题>找到了,试着用样例,下面是一个例子。
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
是属于别人的代码。
继承的虚函数在派生类中也是虚函数…通常的做法是将析构函数设为虚函数。您可能没有意识到析构函数是虚函数。
如果你正在使用别人的头文件,但忘记链接到他们的目标文件,它可能会导致这个错误,因为链接器会丢失CCNode
的析构函数
尝试在类中添加虚拟析构函数。CCNode可能包含了一些虚拟方法,而你的编译器无法处理它。
class MissionController: public CCNode
{
public:
MissionController();
virtual ~MissionController();
};
是一些公共框架,我们在哪里可以看到CCNode类定义?参见vtable ..参考编译错误xcode或http://www.parashift.com/c++-faq-lite/link-errs-missing-vtable.html为更多的帮助。
相关文章:
- "error: no matching function for call to"构造函数错误
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- C++ OpenCV 卡尔曼滤波器构造函数错误
- C++:用户定义的显式类型转换函数错误
- C++ 合并字符串以'system'函数错误
- C++ wmain 函数错误时使用 Unicode
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- C++ 中常量属性的初始化构造函数错误
- 线程 std::调用未知类型,无法专门化函数错误
- 表单显示对话框函数错误,并且不执行下面的语句
- 函数错误 C2059:语法错误:'>'不起作用
- STL向量上出现奇怪的复制构造函数错误
- C++ Visual Studio 重载函数错误:没有重载函数的实例与指定的类型匹配
- C++引用已删除函数错误
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- C++ 乘法定义的构造函数错误消息似乎错误
- 在 c++ 代码中将数组传递给函数错误
- FFMPEG avcodec_decode_video2函数错误代码
- 为什么我会收到转换函数错误