Странное поведение от TinyXML++

Надеюсь, что некоторые из вас, 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 для child, я получаю ошибку:

Необработанное исключение в 0x7c812aeb в Drawing.exe: исключение Microsoft C++: __non_rtti_object @ 0x0012f7b4.

И я получаю это в dbgheap.c в этой строке:

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

Что странно, так это то, что он работает с Node, и я знаю, что там есть элементы (я проверял, используя итерационные методы TinyXML).

Кто-нибудь сталкивался с этим раньше?

3 ответа

__non_rtti_object генерируется оператором dynamic_cast, если переданный указатель или ссылка указывают не на полиморфный объект, а на какой-то мусор. Возможно объект был удален ранее.

Пройдите по коду в отладчике и проверьте, где используется dynamic_cast и что ему передается.

hth Пааво

Просто тыкаю в темноте, я не знаю tinyxml, но кажется, что dynamic_cast пошёл не так. Если вы используете dynamic_cast<> указатель, вы получите NULL-указатель при ошибке. Однако если вы приведете к ссылочному типу, концепция NULL-ссылки отсутствует, поэтому среда выполнения выдает это исключение (или bad_type). MSDN на dynamic_cast, и почему это может пойти не так

Строка, которую вы вставили для возникновения исключения, не помогает прояснить ситуацию, поскольку она определяет симптом, а не причину.

Попытайтесь определить, какой актерский состав был ошибочным, вы сможете найти его, если подойдете к стеку и найдете последний метод в библиотеках tinyxml или заголовках. Затем вы можете решить, работает ли tinyxml, или вы просто применили его неправильно.

удачи!

Проект -> Свойства -> C/C++ -> Язык -> Включить информацию о времени выполнения

Другие вопросы по тегам