0

这应该是特定于 C++ 的。

我在头文件中有一个属性m9ReloadAnim,我可以从构造函数访问它,但是当我尝试从其他函数访问它时,我收到一个错误,例如:EXC_BAD_ACCESS 或类似:“地址不包含对象”。

我有一个像这样的标题类:

#ifndef __SWAT__Weapon__


#define __SWAT__Weapon__

#include "cocos2d.h"

class Weapon : public cocos2d::CCSprite
{
private:
    cocos2d::CCAnimation *m9ReloadAnim = cocos2d::CCAnimation::create();
public:
    Weapon();
    ~Weapon();
    void reloadM9();
};

#endif 

还有一个像这样的cpp文件:

enter code here
#include "Weapon.h"
#include "cocos2d.h"


Weapon::Weapon(){ 
 m9ReloadAnim->setDelayPerUnit(1.1f);
}

Weapon::~Weapon(){
}

void Weapon::reloadM9(){
    m9ReloadAnim->setDelayPerUnit(1.1f);

}
4

2 回答 2

3

您不能像这样初始化变量:

cocos2d::CCAnimation *m9ReloadAnim = cocos2d::CCAnimation::create();

只能static const int在类声明中初始化。

将此初始化移动到您的 ctor:

Weapon::Weapon()
  : m9ReloadAnim(cocos2d::CCAnimation::create())
{
    m9ReloadAnim->setDelayPerUnit(1.1f);
}

或者

Weapon::Weapon()
{
    m9ReloadAnim = cocos2d::CCAnimation::create();
    m9ReloadAnim->setDelayPerUnit(1.1f);
}
于 2013-03-29T14:35:29.183 回答
0

有时会损坏,因此您无法判断错误的来源。我建议在每个方法的入口点放置一个断点,并逐行执行代码以确保它在 reloadM9 方法中触发。检查 m9ReloadAnim 是否为 NULL,或者它是否指向在初始化时创建的对象。此外,您需要检查您是否正确使用了该库。

于 2013-03-29T14:45:35.840 回答