这应该是特定于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);
}
答案 0 :(得分: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);
}
答案 1 :(得分:0)
有时会损坏,因此您无法分辨错误的来源。我建议在每个方法的入口点放置一个断点,并逐行执行代码以确保它在reloadM9方法中触发。检查m9ReloadAnim是否为NULL或是否指向初始化时创建的对象。此外,您需要检查您是否正确使用该库。