2014-10-02 66 views
1

由於C++ 11,可以在類定義中初始化成員變量:如何在類定義中初始化std :: array?

class Foo { 
    int i = 3; 
} 

我知道我可以初始化的std ::數組是這樣的:

std::array<float, 3> phis = {1, 2, 3}; 

我該怎麼辦這在一個類的定義?下面的代碼給出了一個錯誤:

class Foo { 
    std::array<float, 3> phis = {1, 2, 3}; 
} 

GCC 4.9.1:

error: array must be initialized with a brace-enclosed initializer 
std::array<float, 3> phis = {1, 2, 3}; 
            ^error: too many initializers for 'std::array<float, 3ul>' 

回答

3

你需要一個更加大括號,這是不直觀。

std::array<float, 3> phis = {{1, 2, 3}}; 
+0

這似乎是訣竅,非常感謝! – 2014-10-02 13:02:25

+0

這並不能解釋爲什麼你可以說'std :: array phis = {1,2,3};'在類定義之外。我也會期待大括號在這裏適用(但是我通常對這個問題是錯誤的)。 – juanchopanza 2014-10-02 13:09:26

+0

@juanchopanza我認爲就標準而言您是正確的,請參閱[本主題](http:/ /stackoverflow.com/questions/8192185/using-stdarray-with-initialization-lists)。你*應該*能夠使用一套大括號,這是正在解決的GCC問題(AFAIK) – CoryKramer 2014-10-02 13:12:52

相關問題