2016-04-10 8 views
2

インタフェース定数データメンバをランダムに初期化する方法はありますか?

class FireSimulator 
{ 
    Landscape **forest; 
    Weather w; 
    static int statistics; 
    const int x; 
    const int y; 

public: 
    FireSimulator(); 
    FireSimulator(Weather&, int, int); 

    void setBoundary(); 
    void Print(); 
}; 

実装

FireSimulator::FireSimulator() : w(),x(0),y(0) 
{} 

FireSimulator::FireSimulator(Weather& W, int X, int Y): w(W), x(X),y(Y) 
{ 
    forest=new Landscape *[x]; 
    for(int i=0; i<x; i++) 
    { 
     forest[i]=new Landscape[y]; 
    } 
} 

void FireSimulator::setBoundary() 
{} 

void FireSimulator::Print() 
{} 

int FireSimulator::statistics=0; 

これは動的型景観の森を設定します。

ランダム化を使用してフォレスト周辺のツリーを広げる方法を教えてください。

定数データメンバーであるコンストラクタでxとyをランダムに初期化するにはどうすればよいですか?

答えて

2

あなたはランダムな整数を返す関数randomInt()を持っている場合は、あなただけのその戻り値に定数のメンバーを初期化することができます:非暗号ランダム性については

FireSimulator::FireSimulator() 
    : w() 
    , x(randomInt()) 
    , y(randomInt()) 
{} 

を、C標準ライブラリrand()機能が十分に良いかもしれませんあなたの場合は、srand()で播種してください。これらの2つの機能は、#include <cstdlib>から入手できます。 C++ 11では、<random>this question参照)に独自の乱数生成メソッドも用意されています。

+0

"get"関数でそれを行い、メンバの初期化リストで呼び出すことができますか? – Firdaws

+0

@Firdawsごめんなさい、あなたの質問を理解できません。 – jotik

+0

ありがとう、それは働いた!私が意味していたのは、xのゲッター関数でランダム化を実装し、それをコンストラクタで呼び出すことができますか?しかし、それは同じことなので、ありがとう:) – Firdaws

関連する問題