class C
{
public:
C() : arr({1,2,3}) //doesn't compile
{}
/*
C() : arr{1,2,3} //doesn't compile either
{}
*/
private:
int arr[3];
};
理由は、配列は=
構文でのみ初期化できるためです。つまり、
int arr[3] = {1,3,4};
ご質問
- やりたいことを行うにはどうすればよいですか(つまり、コンストラクターで配列を初期化します(本体の要素を割り当てません))。それも可能ですか?
- C ++ 03標準は、ctor初期化子での集約(配列を含む)の初期化に関して特別なことを言っていますか?または、上記のコードの無効性は他のいくつかのルールの当然の結果ですか?
- C ++ 0x初期化リストは問題を解決しますか?
PS私がよく知っているベクトル、boost :: array、および配列に対するその優位性については言及しないでください。