其中一些错误可以通过修改来解决
virtual void draw();
Run Code Online (Sandbox Code Playgroud)
至
virtual void draw() {};
Run Code Online (Sandbox Code Playgroud)
但是,除了虚函数之外,还有什么可能是这些错误的其他原因?什么可能是导致以下错误的原因..
/tmp/cciGEgp5.o:(.rodata._ZTI14CustomXmppPump[typeinfo for CustomXmppPump]+0x18):
undefined reference to `typeinfo for XmppPump'
Run Code Online (Sandbox Code Playgroud)
Pet*_*eng 11
如果您正在使用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.
| 归档时间: |
|
| 查看次数: |
13201 次 |
| 最近记录: |