■
配列とかでよく使う中括弧の代入処理(↓こんなの)。
int A[] = {1,2,3}
これって、初期化子リストって言うみたい。
で、一応Classでそれをオーバーロード出来るみたいなんですが…。
(↓こんな感じ)
#include <iostream> #include <initializer_list> class A { public: // コンストラクタ処理(引数に初期化子リストを指定) A( std::initializer_list<int> list) { /* ここに初期化する処理 */ } }
Visual C++だと、Ver2013から対応だそうな。
今、会社で主に使っているのが、Visual Studio 2010 premiumなので、
上のコードをコンパイルしようとするとエラーになる。
error C2552:初期化子リストによる個別の識別子の初期化に誤りがあります。
ユーザー定義のコンストラクターを含む型はアグリゲートではありません。
これに1時間くらい悩んだわ…。
参考:C++11 の機能 (Modern C++) のサポート