希望你们中的一些人能帮助我。说真的,既然你在我认为你欠我之前就重新归向我了;)
我有以下代码:
//ticpp::Iterator< ticpp::Element > child( "SetPiece" );
ticpp::Iterator< ticpp::Node > child("SetPiece");
GLuint lc_SPieces = 0;
for(child = child.begin( this ); child != child.end(); child++ )
{
lc_SPieces++;
}如果我在子表中使用最上面的声明,就会得到以下错误:
Drawing.exe中0x7c812aeb处的未处理异常: Microsoft C++异常:__non_rtti_object @ 0x0012f7b4。
我在dbgheap.c中找到了这一行:
pvBlk = _heap_alloc_dbg(nSize, nBlockUse, szFileName, nLine);奇怪的是,它适用于Node,而且我知道其中有一些元素(我使用TinyXML迭代方法进行了检查)。
以前有人遇到过这种情况吗?
发布于 2008-11-02 15:57:02
只是在黑暗中窥探,我不知道tinyxml,但似乎dynamic_cast出错了。如果你dynamic_cast<>一个指针,你会得到一个空指针失败.但是,如果转换为引用类型,则不存在空引用的概念,因此运行时抛出此异常(或bad_type)。演员,为什么它会出错
您为异常发生而粘贴的行无助于澄清情况,因为它识别的是症状而不是原因。
尝试识别出错误的强制转换,如果您沿着堆栈并在tinyxml库或头文件中找到最后一个方法,您应该能够找到它。然后,您可以判断tinyxml是否有问题,或者您只是使用了错误的方法。
祝好运!
发布于 2008-11-12 23:38:55
如果传递的指针或引用没有指向多态对象,而是指向一些垃圾,则__non_rtti_object由dynamic_cast运算符生成。也许这个对象早些时候被删除了。
在调试器中逐步遍历代码,并检查dynamic_cast在何处使用以及传递给它的内容。
帕沃
发布于 2008-11-02 16:12:22
项目->属性-> C/C++ ->语言->启用运行时类型信息
https://stackoverflow.com/questions/255302
复制相似问题