Я столкнулся с … интересной проблемой. Я обнаружил, что моя программа падает на стандартном операторе get. Для контекста я переопределяю onEnter
функция (из фреймворка Cocos2dx) для замены изображения после внесения изменений в дальнейшую сцену.
Моя модификация выглядит следующим образом:
значки map< ClassA, CCSprite* >
current
имеет ClassA
void onEnter(){
<parent class>::onEnter();
CCSprite* sprite = icons[current];
if (sprite){
CCNode* parent = sprite->getParent(); //Crashes Here
if (parent){...}
}
}
Из Cocos2d-x:
CCNode* getParent(){
return m_pParent;
}
Примечание: у меня нет проблем с вызовом этой функции где-либо еще, кроме здесь.
Также:
Да, иконки существуют
Да, ток существует
Да, спрайт существует
текущий не указатель
Если это поможет, я использую QNX Momentics IDE.
РЕДАКТИРОВАТЬ :: Вот изображение
Похоже, что это не был действительный CCSprite. Между объявлением и вызовом onEnter пул релизов, который использует cocos2dx, пометил его для удаления. Кажется, в некоторых случаях во время конструктора, CCSprite не был добавлен к родителю и не был отмечен для хранения. Таким образом, он был удален, но остался мусор. Спасибо Cyber.