にメンバ変数を設定しようとしたとき、私はこのようなクラスがあります。今、私はそれから継承別のクラスを持っているコード破りコンストラクタ
Player::Player(Board * someBoard)
{
board = someBoard;
side = '0';
}
void Player::setSide(char newSide)
{
side = newSide;
}
:
class Player
{
public:
Player(Board * someBoard);
void setSide(char newSide);
protected:
Board * board;
char side;
};
とその実装をなどされています。
class HumanPlayer : public Player
{
public:
HumanPlayer(Board * someBoard);
};
そしてその短い実装はこれです:
HumanPlayer::HumanPlayer(Board * someBoard) : Player(someBoard)
{
}
ここで問題は、side = '0';
行でプログラムがフリーズする(Windows 7ではウィンドウが白くなり、凍っているかクラッシュしているかはわかりません)。それをコメントアウトすると、プログラムはうまく動くようになります(変数はまだどこにも使われていないのでコメントアウトしても大丈夫です)。
エラーの原因とは何ですか?どのように修正できますか?
EDIT!
fstream
にいくつかのものを印刷した後、突然すべてのプログラムが機能しました。私は印刷をコメントアウトしようとしました。それはまだ働いた。私は追加したデバッグコードを削除しようとしました。それはまだ機能しています。だから私のコードは上記のものとまったく同じですが、今は魔法のように動作します。
ここで私は何をしますか?異常を無視しますか?それはコンパイラの間違いでしたか?
'char'変数の代入はプログラムをフリーズしません。何か他のものが間違っています。恐らくメッセージループやウィンドウプロシージャのどこかで(おそらくそれを投稿できます)。しかし、問題はおそらくあなたの質問のコードにあることはできません。 –
合意 - デバッガをブレークアウトする時間。 – razlebe
@ insilicoああ私はheisenbugsを嫌いですか?しかし、私はどのようにメッセージループを得るのですか?私はGUIプログラミングの初心者です – wrongusername