2012-01-12 8 views
1

次のような状況でよく使用されるクラス(名前はTheClassとしましょう)があります:定数から構成され、いくつかの引数として他のコンストラクタに渡されます。残念ながら、私は、初期化のために、非常に面倒な構文を使用する必要があります。PODのように初期化することが可能なようにクラスを実装することが可能です

Otherclass{ TheClass{1, 'a', 2}, 
      TheClass{1, 'b', 4}, 
      TheClass{3, 'h', 2}, 
      TheClass{1, 't', 8} } 

それはPODだったかのように、それは可能なクラスを初期化できるようにする方法はありますか?私。私は編集

Otherclass{ {1, 'a', 2}, 
      {1, 'b', 4}, 
      {3, 'h', 2}, 
      {1, 't', 8} } 

を書くことができるようにしたい:私は、私が直面してる問題の正しい定義で別の質問を掲載しました。を参照してくださいIs it possible to pass data as initializer_list to std::array of structures?

+3

C++ 11に追加されていませんでしたか? – pezcode

+0

もっと複雑なケース(テンプレートなど)があるとしましょう。上記のことは明らかにうまくいくので、問題は最小限の作業で更新する予定です。 –

+1

あなたの用語は少しばかり離れていることに注意してください。あなたが記述しているのは値の初期化ではなく集約の初期化です。 – ildjarn

答えて

5

これはあなたが欲しいものを行う必要があります。あるいは、typedef TheClass t;を入力するか、または#define _(x) TheClass x#undefのようにマクロを定義することができます。

#include <initializer_list> 
class TheClass { 
public: 
    TheClass(int x, char y, int z) { } 
}; 

class OtherClass { 
public: 
    OtherClass(std::initializer_list<TheClass> t) { } 
}; 

int main (int argc, char **argv) { 
    OtherClass s { {1,'a',2}, {1, 'b', 4}, {3, 'h', 2}, {1, 't', 8}}; 
    return 0; 
} 
関連する問題