私は、最後の引数として 4 つの文字列、4 つの int および vector(int) を持つ Client クラスを作成する必要がある学校の作業に取り組んできました。問題は、ベクトルのすべての要素を印刷したいときに、ミューテーターを直接使用すると、ナンセンスを印刷することです。
vector<int> v_int;
vector<int>::iterator it_v_i;
v_int.push_back(2);
v_int.push_back(3);
v_int.push_back(7);
v_int.push_back(1);
Client client("nom1", "prenom1", "adress1", "city1", "comment1", 1240967102, 44522, 5, 10, v_int);
v_int = client.getIdResources();
for (it_v_i = v_int.begin(); it_v_i != v_int.end(); it_v_i++) {
cout << *it_v_i << ", ";
}
期待どおりに 2,3,7,1 を出力しますが、次のコード
for (it_v_i = client.getIdResources().begin(); it_v_i != client.getIdResources().end(); it_v_i++) {
cout << *it_v_i << ", ";
}
不明な番号 (3417664... など) を出力、不明な番号、7、1
なぜこれが起こっているのか本当に理解できません
編集 :
コンストラクター:
Client::Client(const string& name, const string& surname, const string& adress, const string& city, const string& comment,
const int& phoneNb, const int& postalCode, const int& termAppointment, const int& priority, const vector<int>& idResources)
: name(name), surname(surname), adress(adress), city(city), comment(comment), phoneNumber(phoneNb),
postalCode(postalCode), termAppointment(termAppointment), priority(priority), idResources(idResources)
{ }
ミューテーター :
std::vector<int> getIdResources() const{ return idResources; }