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::arrays、および配列に対するそれらの優位性については言及しないでください。