ISO C ++是否禁止私有const unsigned long的初始化?

时间:2013-04-15 14:04:54

标签: c++ codepad

我正在使用codepad.org

class a {
    private:
        const unsigned long b = 100;
};

  

第3行:错误:ISO C ++禁止成员'b'

的初始化      

由于-Wfatal-errors而导致编译终止。

很抱歉,如果我错过了一些明显的东西,但可能出现了什么问题?

2 个答案:

答案 0 :(得分:3)

在C ++ 11之前,您只能初始化类定义中的静态const数据成员:

static const unsigned long b = 100;

这通常是你想要的。让a的所有实例在它们之间重复这个常量值没有多大意义。

如果您启用了C ++ 11支持,your code will compile

答案 1 :(得分:1)

只允许C ++ 03中的static const个整数类型进行类内初始化,而且您的变量不是static

要么使它static(在这种情况下,你应该 - 请注意你还必须在这种情况下定义它),或使用C ++ 11编译器。