在标头中初始化枚举变量

时间:2013-03-30 11:41:57

标签: c++

我正在创建一个新的枚举:

enum WState {SLEEPING=2, WAITING_FOR_DATA=3, SENDING=4, IDLE=5, ERROR=6};

然后我试图将该枚举类型的变量直接初始化为默认状态。

WState CurrentState = WState::ERROR;

我无法弄清楚正确的语法,或者在搜索答案时可能会遗漏一些重要的关键字。它说:

  

不允许使用数据成员初始化程序

enter image description here

1 个答案:

答案 0 :(得分:1)

在C ++ 11中,您正在做的事情是允许的。但是,在C ++ 03中,您必须在类构造函数中执行初始化(可能在初始化列表中,如下所示):

class Wireless
{
public:
    enum WState { /* ... */, ERROR = 6 };
    WState CurrentState;
    Wireless() : CurrentState(WState::ERROR)
    { /* ... */ }

    // ...
};