C ++崩溃在get语句?

时间:2014-08-12 17:33:47

标签: c++ cocos2d-x cocos2d-x-2.x

我遇到了一个......有趣的问题。我发现我的程序崩溃了标准的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;
}

注意:除了这里,我在其他地方调用此功能时没有问题。

此外:

  1. 是的,图标存在

  2. 是,目前存在

  3. 是的,精灵存在

  4. 当前不是指针

  5. 如果它有助于我使用QNX Momentics IDE。

    编辑::这是一张图片

    enter image description here

1 个答案:

答案 0 :(得分:1)

看起来它不是有效的CCSprite。在声明和调用onEnter之间,cocos2dx使用的发布池将其标记为删除。在某些情况下,在构造函数期间,CCSprite似乎未添加到父级,并且未标记为保留。因此,它被删除但仍留下一些垃圾。谢谢Cyber