後,我選擇調試它在MVS2010請查看墜毀的這一形象: http://i48.tinypic.com/dr8q9u.jpg寫入類指針給了我一個訪問衝突錯誤
這裏的Game.h頭,顯示了遊戲類結構,在圖片中,您將看到導致訪問衝突的違規方法(setBot(botInfo * b)
)。
class botInfo; // Forward declaration
class Game {
int gameState;
int flagDropTime;
botInfo * bot;
public:
Game();
~Game(void);
void startGame();
void gameOver(int victoriousTeam);
void resetBall();
void hideBall();
int getState();
void setBot(botInfo * bot);
botInfo * getBot();
};
從botInfo(另一個類)我打電話與該碼的函數的一個實例, (遊戲_dsbTrench是botInfo實例的成員變量)。
botInfo * botPointer = this;
_dsbTrench->setBot(botPointer);
問題是,每當我把這種導致異常:在MERVBot.exe在0x72332569(PubBot.dll) 未處理的異常:0000005:訪問衝突寫入位置0xcdcdcdd5。
那麼這個錯誤是什麼原因?我該如何解決它?
謝謝。
我沒有爲_dsbTrench分配的內存,我剛剛宣佈它使用遊戲_dsbTrench。我不熟悉C++和C++中的類,但是我認爲我曾經聲明類的構造函數會自動調用? – Weasal 2010-02-13 15:08:53
如果聲明沒有提供參數,它的默認構造函數會自動調用,是的。提供的課程沒有構造函數 - 或者如果構造函數的構造函數不是由您指定的默認構造函數,就是默認的加上其他構造函數。 – 2010-02-13 15:12:33
是的,解決了這個問題。我宣佈_dsbTrench = new Game();在使用_dsbTrench-> setBot()之前,它工作。謝謝 – Weasal 2010-02-13 15:15:22