私がしようとしているのは、クラスオブジェクトを関数 "random"に入れることです。 ただし、クラス内の変数の事前に割り当てられた値が変更されません。なぜこうなった?私は2013年ベクトルから要素をランダムに選択するオブジェクトを持つ関数を呼び出す
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int racedice;
int genderdice;
int namedice;
int agedice;
class human
{
public:
// Assignment of variables
int age;
string name = "\"NAME UNSPECIFIED\"";
string race = "UNKNOWN";
string gender = "UNKNOWN";
void setrace(string x)
{
race = x;
}
void setgender(string x)
{
gender = x;
}
void setage(int x)
{
age = x;
}
void setname(string x)
{
name = x;
}
void info()
{
cout << "NAME: " << name << endl;
cout << "RACE: " << race << endl;
cout << "GENDER: " << gender << endl;
cout << "AGE: " << age << endl << endl;
}
};
void random(human obj)
{
vector<int> agelist;
agelist.push_back(1);
agelist.push_back(2);
agelist.push_back(3);
agelist.push_back(4);
agelist.push_back(5);
agelist.push_back(6);
agelist.push_back(7);
agelist.push_back(8);
agelist.push_back(9);
agelist.push_back(10);
vector<string> racelist;
racelist.push_back("White");
racelist.push_back("Black");
racelist.push_back("Asian");
racelist.push_back("Hispanic");
racelist.push_back("European");
racelist.push_back("American");
vector<string> malenames;
malenames.push_back("Jim");
malenames.push_back("Josh");
malenames.push_back("Jack");
malenames.push_back("Tim");
vector<string> femalenames;
femalenames.push_back("Kimi");
femalenames.push_back("Mary");
femalenames.push_back("Julia");
femalenames.push_back("Olivia");
vector<string> genderlist;
genderlist.push_back("Male");
genderlist.push_back("Female");
genderdice = (rand() % 2);
racedice = (rand() % 6);
namedice = (rand() % 4);
agedice = (rand() % 10);
if (genderdice == 0)
{
obj.setgender(genderlist.at(genderdice));
obj.setname(malenames.at(namedice));
}
else
{
obj.setgender(genderlist.at(genderdice));
obj.setname(femalenames.at(namedice));
}
obj.setrace(racelist.at(racedice));
obj.setage(agelist.at(agedice));
}
int main()
{
vector<human> humanlist;
human *joe = new human;
human *mary = new human;
humanlist.push_back(*joe);
humanlist.push_back(*mary);
random(*joe);
random(*mary);
vector<human>::iterator it;
for (it = humanlist.begin(); it != humanlist.end(); it++)
{
it->info();
}
cout << endl;
system("pause");
}
[mcve]を提供するように質問してください。 –
'ベクトル agelist {1,2,3,4,5,6,7,8,9,10};(自動it = humanlist.begin(); ...'のための –