2011-09-11 11 views
0

自gcc 4.4(我也可以在其他地方沒有問題的情況下使用它們)應該支持初始化列表,但是當我嘗試用MinGW 4.5.2編譯時,我得到「壞陣列初始化器」錯誤。我用-std = C++ 0x進行編譯。 「點」只是一個Vector2D [4]。MinGW 4.5.2 - 初始化成員數組問題

我在做什麼錯?

BoundingBox::BoundingBox(float width, float height, float posX, float posY) : 
points{ 
      Vector2D{posX,posY}, 
      Vector2D{posX+width, posY}, 
      Vector2D{posX+width, posY+height}, 
      Vector2D{posX, posY+height} 
    } //error: bad array initializer 
{ 

} 
+2

你編譯的是哪個GCC版本? MinGW不是一個編譯器。 – tjameson

+0

g ++ 4.5.2 - 我知道MinGW不是編譯器,但我認爲這已經暗示我正在談論C++ - 至少我不知道MinGW有另一個C++編譯器。 – Cubic

回答

0

嘗試增加括號:中

points({Vector2D{posX, posY}, ...}) 

代替

points{Vector2D{posX, posY}, ...} 

我不手邊有一個編譯器檢查。

+0

謝謝,但那不起作用(實際上它根本沒有區別)。它似乎也不適用於std :: array - 奇怪的是,它可以與std :: vector一起工作,所以我想我會假設它是一個bug並且現在就解決了。 – Cubic

0

你的代碼用gcc 4.6.1(linux)編譯。

所以如果有一個bug已經修復。

+0

這應該是一個評論 – P0W

+0

@ P0W由於切換到更新的編譯器修復了這個問題,我認爲它實際上是一個有效的答案(意味着切換)。可以肯定的是,我今天測試過了,如果Vector2D類有一個非默認的構造函數,g ++ 4.5.2確實會生成錯誤「bad array initializer」,而使用g ++ 4.6.4,4.9和5.1時,相同的代碼編譯得很好。 – alexisdm