2011-06-26 4 views
0

現在、非常に厄介なSIGSEGV(セグメンテーションフォルト)を取得しています。これは私のコードです:列挙型を使用した奇妙なSIGSEGV(セグメンテーションフォルト)

typedef enum 
{ 
    LIGHT, 
    DARK, 
    NONE 
} Color; 

class Board 
{ 
    public: 
     Color toMove(); 
    private: 
     Color side; 
}; 

と実装は次のとおりです。

Color Board::toMove() 
{ 
    return side; 
} 

そして、私は単純にセグメンテーションフォールトでの結果とtoMove();を呼んでいます。 gdbの出力は

Program received signal SIGSEGV, Segmentation fault. 
0x004025ee in Board::toMove (this=0x0) 
    at ...\board.cpp:19 
19   return side; 

誰でも知っていますか?

+4

問題はこのコードにはありませんが、他の場所にあります。あなたは私たちにあなたの呼び出しコードを表示する必要があります(可能な限り最小限に抑えられています)。 –

答えて

8

この素敵なヒント(this=0x0)は、有効なBoardオブジェクトなしでtoMove()に電話しようとしました。

+0

ああそう! - 私は呼び出しコードに欠陥を見つけることができなかったので、これは明らかです! - 私はtoMove()を呼び出す人にボードを播いていません! – Skeen

6
Board::toMove (this=0x0) 

this = 0x0手がかりです:あなたはNULL BoardtoMove()を呼んでいます。 Do not do :-)