私は、名前、住所、および電話番号のオブジェクトクラスで構成されるpersonオブジェクトクラスを持っています。名前、住所、電話番号はランダムに生成されます。C++のループでランダム化されたオブジェクトを生成する
ユーザーは、ランダムな人々が生成するどのように多くの選択および機能は、ループでそれらを生成すると呼ばれ、ベクトルに格納:
vector<Person> pV; //vector of people
for(int i = 0; i < num; i++){
Person x; //create new person object x
pV.push_back(x) //add to vector of people
cout << pV[i].getName(); //print for text
}
問題は、生成されたすべてのオブジェクトが同じ(同一であり、さ名前、住所など)。同じセッション中に新しいリストを生成すると、異なる情報を持つ人物が生成されますが、それらはすべて同じになります。
これはJavaで発生する可能性がありますランダム化時に静的を使用する場合は...私はC + +で同等ののか分からない。
提案がありますか?
class Person{
public:
Person();
private:
Name name;
};
Person::Person(){
Name name;
}
ランダムな名前生成と名のクラスがある:次のように
Personクラスが設定されている次のように人のクラスが設定されている名前だけを使用して
おかげ
:
class Name{
public Name();
string generateName();
private:
string name;
};
Name::Name(){
Name = generateName();
}
string Name::generateName(){
srand(time(NULL));
string Names[5] = {"a", "b", "C", "d", "e"};
int randomName = rand() % 5;
return Names[randomName];
}
[mcve]を付けてください。あなたはランダムな人々を構成するコードを表示していないので、どのように動作するのかを知ることができますか? –
'P'コンストラクタで乱数ジェネレータをリセットまたは再シードしていないことを確認してください。 – user4581301
@JohnColeman申し訳ありませんが、私は人と名前のクラスの最小限のバージョンを追加しました。 – Strobe00