Ich habe ein Problem mit dynamic_cast. Ich habe gerade mein Projekt kompiliert und alles im Debug-Modus getestet und dann versucht, es im Release-Modus zu kompilieren. Ich habe alle Konfigurationen vom Debug-Modus kopiert, außer dem Optimierungsparameter, der jetzt /o2 ist (während des Debuggens habe ich ihn als /od eingestellt). Das Projekt wurde kompiliert, aber als es begann, meine Ressourcen zu laden, bekam ich eine Ausnahme im folgenden Codeabschnitt:
for(int j = 1; j < i->second->getParametersNumber();j++)
{
CCTMXTiledMap* temp = CCTMXTiledMap::tiledMapWithTMXFile(i->second->As(j).c_str());
CCTMXLayer* ret = NULL;
for(NSMutableArray::NSMutableArrayIterator l=temp->getChildren()->begin();!ret && l!=temp->getChildren()->end();l++)
ret = dynamic_cast (*l);
t1.first = ret;
templates[i->first].second.push_back(t1);
templates[i->first].second.back().first->retain();
}
Im Code hat sich nichts geändert und wenn ich im Debugger jede Variable in den Klassen überprüfe, ist sie das, was sie sein sollte. Aber das dynamic_cast wirft std::__non_rtti_object. Was mache ich falsch? Ich verwende cocos2d-x, ich hatte nicht genug Ruf, um dieses Tag hinzuzufügen!