2012-05-17 116 views
0

这是我目前在Score.h文件中的类分数的代码: -访问冲突写入位置0xaaaaaaaa

class Score 
{ 

protected: 
long m_Scores; 
long m_HighScore; 
//private: 

public: 
Score(); 
~Score(); 
void Init(); 
void Update(float deltaMS); 
void Render(); 
void Release(); 
void SetScore(long sc){ 
    m_Scores=sc; 
} 

long GetScore(){ 
    return m_Scores; 
} 
void SetHighScore(long sc){ 
    m_HighScore=sc; 
} 

long GetHighScore(){ 
    return m_HighScore; 
} 
void AddScore(int add); 

}; 

我收到以下错误,每当我尝试访问类本身m_Scores。

Access violation writing location 0xaaaaaaaa. 

SetScore()方法因此无法运行。 我知道我在做一些愚蠢的事情,但无法弄清楚。你能帮我解决吗?

+2

没有代码使用这个类,你的问题就无法得到解答。 – sharptooth

+0

我只是在调用SetScore()方法。 – noob

+0

正如@sharptooth所说,发布的代码看起来很好,但可能会与使用该类的代码进行交互。 – TheJuice

回答

1

这是因为你的Score您尝试SetScore()的对象是已经过时了,destoryed。注意它的一生。

+0

感谢您的帮助。我实际上是在使用错误的条件来创建对象。现在解决了。 – noob

2

您显然是通过指针访问该类的,并且位于pointer's位置的内存值为0xaaaaaaaa。这看起来很像未初始化内存的值。

所以我想你有一个Score *变量,你没有的东西灌浆的影响。你需要做的

  • 将其更改为Score之一,并使用直接成员访问(.)代替指针间接(->
  • initalise与var = new Score();变量,后来释放它与free var;