奇怪的SIGSEGV(分段错误)使用枚举

Ske*_*een 0 c++ enums enumeration segmentation-fault

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

typedef enum 
{
    LIGHT,
    DARK,
    NONE
} Color;

class Board
{
    public:
        Color toMove();
    private:
        Color side;
};
Run Code Online (Sandbox Code Playgroud)

并且实施是:

Color Board::toMove()
{
    return side;
}
Run Code Online (Sandbox Code Playgroud)

我只是简单地调用toMove();分段错误的结果; 这是gdb输出:

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

有人有个主意吗?

Mic*_*kis 8

调试器(this=0x0)的这个可爱提示建议您尝试在toMove()没有有效Board对象的情况下调用.


Mat*_*Mat 6

Board::toMove (this=0x0)
Run Code Online (Sandbox Code Playgroud)

this = 0x0是线索:你正在调用toMove()NULL Board.不要那样做:-)