struct E_Point {
double x, y;
E_Point(): x(0), y(0) {}
E_Point(double x, double y) : x(x), y(y) {}
};
E_Point problem[] = {
{0.3871953044519425, -0.91857980824611341}, // Error: initialization of non-aggregate type 'E_Point' with an initializer list
{0.36139704793723609, 0.91605957361605106},
{-0.8208980020500205, 0.52853407296583088},
{0.36178501611208552, 0.88880385168617226},
{-0.43211245441046209, 0.6803420222771047}
};
clang
3.1でコンパイル。
これは GCC 4.6.1 でコンパイルされることを指摘しておく必要があります。
私の現在の理解ではproblem
、それは構造体の配列であるため、非集約型であり、単に構造体または配列だけでなく、複合体になっているということです。
-std=c++11
しかし、フラグを送信してclang
も問題は軽減されません。
更新:わかりました。私のバージョンの にclang
は何らかの欠陥があり、何らかの理由でこれを処理できないようです。
初期化するより伝統的な方法は何ですか? このようにしますか?これはコンパイルされますが、同じコードが生成されますか? オリジナルは呼び出しませんが、ctor を呼び出しますか?
E_Point problem[] = {
E_Point(0.3871953044519425, -0.91857980824611341), // 1559
E_Point(0.36139704793723609, 0.91605957361605106), // 1560
E_Point(-0.8208980020500205, 0.52853407296583088), // 1798
E_Point(0.36178501611208552, 0.88880385168617226), // 1799
E_Point(-0.43211245441046209, 0.6803420222771047) // 1800
};