C++:除虚函数外," undefined reference to 'typeinfo for [class name]' "的原因是什么
C++: what are the causes of " undefined reference to 'typeinfo for [class name]' "other than virtual functions
其中一些
错误可以通过修改来解决
virtual void draw();
自
virtual void draw() {};
但是,除了虚函数之外,这些错误的其他原因是什么?导致以下错误的原因是什么。.
/tmp/cciGEgp5.o:(.rodata._ZTI14CustomXmppPump[typeinfo for CustomXmppPump]+0x18):
undefined reference to `typeinfo for XmppPump'
如果你使用 RTTI (-frtti) 编译,请确保你的依赖库也是用它编译的,而不是 -fno-rtti。否则,当您对使用 -fno-rtti 编译的类进行子类或使用 dynamic_cast 时,将收到 typeinfo 错误。
在 GCC 中,第一个非内联虚拟方法用于确定创建 vtable 和 typeinfo 对象的翻译单元。 如果您随后不定义该方法,则会产生您看到的错误,因为它期望您在某处定义该方法,并等待该定义发出该类的 vtable 和 typeinfo 的输出。
http://gcc.gnu.org/onlinedocs/gcc/Vague-Linkage.html
当您将virtual void draw();
声明更改为 virtual void draw() {};
的内联定义时,它会选择一个不同的函数来发出 vtable。
相关文章:
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- C++错误:"class name"之前的预期类型说明符
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 错误:"class name"不命名类型
- 为什么我会看到"member function with the same name as its class must be a constructor"?
- 通过在每个元素上调用名称(),将类的向量转换为clangtype(class :: name())的向量
- "expected unqualified-id before 'void'" & "string in class does not name a type" 错误
- C++错误:" 'class' does not name a type"和"invalid use of incomplete type ‘struct ...' "
- C++:除虚函数外," undefined reference to 'typeinfo for [class name]' "的原因是什么
- 我们如何在 c++ 中以朋友声明"friend elaborated-class-name ;"为例?
- VS2010 - 如何解决"XXX is a reserved class name"错误
- C++嵌套继承错误"expected class-name before ‘{’ token"
- 什么是Windows 'class name'开发的应用程序的?
- C++类继承"expected class-name"错误
- C++ 错误:标识符'class name'未定义
- 错误:在 c++ 中"too few arguements in template class name 'queue' "
- 前向声明不够时如何避免"'identifier' uses undefined class/struct/union 'name'"错误?
- "class name"必须是以前定义的类或结构
- "error: expected class-name before '{' token"尝试继承