2011-06-26 79 views
0

我目前正在得到一个非常奇怪的SIGSEGV(分段错误),不使用任何指针,只是枚举;这是我的代码:使用枚举奇怪的SIGSEGV(Segmentation fault)使用枚举

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

啊对! - 因为我似乎无法在调用代码中发现缺陷,但这很明显! - 我没有给董事会打电话给移动()! – Skeen

6
Board::toMove (this=0x0) 

this = 0x0是线索:你在一个NULL Board调用toMove()。不要这样做:-)