2013-04-15 26 views
0

我使用codepad.orgISO C++禁止private const unsigned long的初始化?

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

Line 3: error: ISO C++ forbids initialization of member 'b'

compilation terminated due to -Wfatal-errors.

很抱歉,如果我錯過了一些東西很明顯,但什麼可能是錯誤的?

+1

您是否已啓用相關的C++ 11支持? – juanchopanza

回答

3

之前C++ 11,你只能在類定義中初始化靜態常量數據成員:

static const unsigned long b = 100; 

這通常是你想要的呢。如果a的所有實例都具有相同的重複值,那麼沒有多大意義。

如果啓用C++ 11支持,your code will compile

+0

謝謝,這是非常有幫助的。 – alan2here

+0

thx,非常有用。 – zszen

1

只允許在C++ 03中使用staticconst整型,並且您的變量不是static

要麼使其成爲static(在這種情況下,您應該注意,您還必須在此情況下定義它),或者使用C++ 11編譯器。