我有一个分段错误。使用gdb调试,堆栈中的第一帧是
在MyClass()
的typeinfo中有人知道关于typeinfo的事吗?
答案 0 :(得分:3)
有同样的问题;发布解决方案,因为它可能会帮助其他人:
对项目进行干净的重建解决了这个问题 - 一些目标文件使用了不同版本的头文件,导致了不一致。实际的错误在我的构建脚本中,因为没有正确表达依赖关系。
答案 1 :(得分:2)
我怀疑在这种情况下,作为框架顶部的typeinfo完全是一个红色的鲱鱼。您需要上调调用堆栈,直到找到自己的代码并在此处查看更详细的信息。几乎可以肯定你是尝试从空指针获取typeinfo,但它有点可能它只是一个垃圾指针值(这不太明显)。
答案 2 :(得分:1)
RTTI仅适用于至少具有虚拟方法的类,因此请确保您拥有虚拟方法。
另外,请记住,您可以间接使用RTTI(dynamic_cast,typeinfo,typeid)(catch是或者可以用dynamic_cast实现)。