2013-03-29 5 views
0

Это должно быть C++.Нельзя использовать свойство 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

Это, вероятно, не проблема, но имена, содержащие два последовательных символа подчеркивания ('__SWAT__Weapon__') и имена, начинающиеся с символа подчеркивания, за которым следует большая буква, зарезервированы для реализации. Не используйте их. –

+0

Хмм, он генерируется IDE (Xcode), поэтому я просто оставил его вот так, вот почему они там –

+1

Yuk. Люди, которые пишут IDE, часто не говорят достаточно людям, которые пишут библиотеки и компиляторы. –

ответ

3

Вы не могли бы инициализировать переменную так:

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

Только static const int может быть init в объявлении класса.

Переместить это INIT вашему CTOR:

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

или

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

Я не думаю, что это должно быть большой проблемой, так или иначе я пробовал, все равно не повезло –

+0

@FerencDajka Где указывает сообщение об ошибке? cpp или файл заголовка? Может ли это сообщение помочь? Http://stackoverflow.com/questions/327082/exc-bad-access-signal-received – gongzhitaao

+0

точно в строке, где я пытаюсь получить доступ к свойству, поэтому в cpp –

0

Иногда повреждается, так что вы не можете сказать, где ошибки происходят. Я бы предложил поставить точку останова в точке входа каждого метода и пошаговый код по строке, чтобы убедиться, что он запускается в методе reloadM9. Убедитесь, что m9ReloadAnim имеет значение NULL или указывает на объект, созданный при инициализации. Кроме того, вам необходимо проверить, правильно ли вы используете библиотеку.

Смежные вопросы