后,我选择调试它在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