2016-09-22 8 views
2

これは簡単な質問かもしれませんが、パラメータ化されたコンストラクタを使用してオブジェクトの配列を初期化しようとしています。たとえば:しかしthisリンクに述べたように2つのパラメータがあるので、私はすでに、ベクトルの初期化を試してみましたC++ 03複数のパラメータを持つオブジェクトの配列を初期化する

class A{ 
public: 
    int b,c,d; 
    A (int i, int j); 
}; 

void A::A(int i, int j){ 
    d = rand() 
    b = 2*i; 
    c = 3*j; 
} 

void main(){ 
    A a[50]; /*Initialize the 50 objects using the constructor*/ 
} 

、これは動作しません。

また、このlinkに記載されているように、50個の初期化値を手動で入力することは不可能で面倒ではありません。

もっと簡単な方法はありますか?また、i、jの値はすべてのオブジェクト(main()から利用可能)で同じですが、dはランダムな値でなければならず、オブジェクトごとに異なります。

答えて

2

あなたはSTDを使用することができます::

例生成:C++ 03のものと

A generator(){ return A(1,2); } 

std::generate(a, a + (sizeof(a)/sizeof(a[0])), generator); 
+1

幸運を! (C++ 11までのラムダはありません)。 –

+0

はい、私はこれを忘れました。 –

+0

が更新されました。私は今これをupvoteします。 –

0

2つの引数のコンストラクタにデフォルトの引数を指定しないでください。

A (int i = 0, int j = 0);

そして、それはデフォルトコンストラクタのためで立つだろう、とA a[50];は自動的に50回、それを使用します。

関連する問題