2011-09-11 9 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で動作するようにも見えません - strangely:std :: vectorで動作しますので、バグだと仮定して、それを解決してください。 – Cubic

0

あなたのコードはgcc 4.6.1(linux)でコンパイルされます。

バグがあった場合は修正されています。

+0

これはコメントでなければなりません – P0W

+0

@ P0W最近のコンパイラに切り替えると問題が解決するので、実際は有効な答え(切り替えが暗示されている)だと思います。確かに、私は今日テストしましたが、Vector2Dクラスにデフォルト以外のコンストラクタがある場合、g ++ 4.5.2では "bad array initializer"というエラーが生成されますが、g ++ 4.6.4,4.9および5.1では同じコードが綺麗にコンパイルされます。 – alexisdm

関連する問題