未定义的符号:“vtable”和“typeinfo”
问题:
编译时一个C程序,出现以下错误:
Undefined symbols: "vtable for Obstacle" "typeinfo for Obstacle"
这些符号是什么意思,如何解决?
答案:
在 C 中,虚方法是在基类中声明并在派生类中重写的方法。为了允许在运行时动态绑定到正确的方法,编译器会为每个包含虚拟方法的类生成虚拟方法表 (vtable) 和类型信息 (typeinfo)。
错误表明编译器无法找到 Obstacle 类的 vtable 和 typeinfo。如果出现以下情况,就会发生这种情况:
要解决这些错误,请确保 Obstacle 类中的所有虚拟方法都声明为纯虚拟方法,使用以下语法:
<code class="cpp">virtual void Method() = 0;</code>
这表明必须重写该方法在派生类中,并且它在基类中可能没有自己的实现。
如果 Obstacle 类包含任何非纯虚拟方法,请确保它们在派生类中实现。否则,编译器将假设它们在某处有实现,并在不包含实际实现的对象文件中生成 vtable 和 typeinfo。
以上是为什么我的 C 程序中出现“未定义符号:‘vtable’ 和‘typeinfo’\”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!