TinyXML++的奇怪行为

Odd behavior from TinyXML++

本文关键字:TinyXML++      更新时间:2023-10-16

希望你们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++;
    }

如果我使用儿童的顶部声明,我会得到错误:

中0x7c812aeb处出现未处理的异常Drawing.exe:Microsoft C++异常:__non_rtti_object@0x0012f7b4。

我在dbgheap.c的这行得到了它:

pvBlk = _heap_alloc_dbg(nSize, nBlockUse, szFileName, nLine);

奇怪的是,它能与Node一起工作,而且我知道其中有元素(我使用TinyXML迭代方法进行了检查)。

以前有人碰到过这个吗?

只是在黑暗中摸索,我不知道tinyxml,但似乎是dynamic_cast出了问题。如果您dynamic_cast<>一个指针,失败时会得到一个NULL指针。但是,如果强制转换为引用类型,则不存在NULL引用的概念,因此运行时会抛出此异常(或bad_type)。MSDN上的dynamic_cast,以及为什么它会出错

您为发生异常粘贴的行无助于澄清情况,因为它识别的是症状而不是原因。

尝试识别出错误的强制转换,如果您在堆栈中查找tinyxml-libs或headers中的最后一个方法,您应该能够找到它。然后你可以决定tinyxml是否有效,或者你只是用错了方法。

祝你好运!

如果传递的指针或引用不是指向多态对象,而是指向一些垃圾,则dynamic_cast运算符将生成

__non_rtti_object。也许该对象早些时候被删除了。

在调试器中逐步执行代码,并检查dynamic_cast在哪里使用以及传递给它的内容

hthPaavo

项目->属性->C/C++->语言->启用运行时类型信息