Надеюсь, что некоторые из вас, люди 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++;
}
Если я использую верхнее объявление для ребенка, я получаю сообщение об ошибке:
Unhandled exception at 0x7c812aeb in Drawing.exe: Microsoft C++ exception: __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. Затем вы можете решить, надеты ли tinyxml, или вы просто применили его неправильно.
удачи!
Проект -> Свойства -> C / C++ -> Язык -> Включить информацию о типе времени выполнения
__non_rtti_object генерируется оператором dynamic_cast, если переданный указатель или ссылка указывает не на полиморфный объект, а на какой-то мусор. Возможно, объект был удален ранее.
Просмотрите код в отладчике и проверьте, где используется dynamic_cast и что ему передается.
hth Пааво