希望你们中的一些TinyXML ++人能帮助我。真的,因为你在我认为你欠我之前向我推荐过;)
我有以下代码:
//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++;
}
如果我对孩子使用top声明,我会收到错误:
0x7c812aeb处的未处理异常 Drawing.exe:Microsoft C ++异常: __non_rtti_object @ 0x0012f7b4。
我在这行的dbgheap.c中得到它:
pvBlk = _heap_alloc_dbg(nSize, nBlockUse, szFileName, nLine);
有什么奇怪的是它适用于Node,我知道那里有元素(我使用TinyXML迭代方法检查过)。
有没有人遇到过这个?
答案 0 :(得分:1)
只是在黑暗中戳,我不知道tinyxml,但似乎dynamic_cast出错了。 如果你是dynamic_cast&lt;&gt;一个指针,失败时会得到一个NULL指针。但是,如果转换为引用类型,则没有NULL引用的概念,因此运行时会抛出此异常(或bad_type)。 MSDN on dynamic_cast, and why it can go wrong
为发生例外而粘贴的行无助于清除情况,因为它识别症状而不是原因。
尝试识别出错的演员表,如果你走上堆栈并找到tinyxml libs或header中的最后一个方法,你应该能够找到它。然后你可以决定tinyxml是否是worng,或者你只是以错误的方式应用它。
祝你好运!答案 1 :(得分:1)
__non_rtti_object
由dynamic_cast运算符生成,而不是指向某些垃圾。也许该对象早先被删除了。
逐步调试调试器中的代码,检查dynamic_cast的使用位置以及传递给它的内容。
HTH 帕沃
答案 2 :(得分:0)
项目 - &gt;属性 - &gt; C / C ++ - &gt;语言 - &gt;启用运行时类型信息