Ich habe folgende Datenstruktur als eine Klasse mit dem Namen "Aufgabe":C++ neugierig Verhalten in vector :: push_back()
private:
string name;
int computation_time;
int period;
Außerdem habe ich eine ASCII-Datei mit folgendem Inhalt:
A 3 10
B 2 12
C 1 11
name = A, computation_time = 3, Zeit = 10 und so weiter ....
Jetzt möchte ich in der Datei lesen, erstellen Aufgaben Objekt und schieben sie es zurück in einen Vektor:
void read_in_task_list_and_create_tasks(const string &filename, vector<Task> ¤t_tasks)
{
ifstream in_file;
in_file.open(filename.c_str());
string tmp_name;
int tmp_computation_time;
int tmp_period;
while(!in_file.eof())
{
in_file >> tmp_name;
in_file >> tmp_computation_time;
in_file >> tmp_period;
// Task tmp_task(tmp_name, tmp_computation_time, tmp_period);
// current_tasks.push_back(tmp_task);
current_tasks.push_back(Task(tmp_name, tmp_computation_time, tmp_period));
}
}
Jetzt, wenn ich in current_tasks Vektor schaue, hat es Elemente, aber ihre Werte stimmen nicht mit meinen Werten in_file überein. Beobachten Sie die überkommenen Zeilen. tmp_task object ist genau richtig, aber wenn es zurückgeschoben wird, verliert es seine Werte wie oben beschrieben.
Könnte dies ein Kopier-Konstruktor-Problem in der Task-Klasse sein, weil std :: vector die Speicherzuweisung verwaltet?
Ich benutze Netbeans mit G ++ Compiler auf Linux x86.
THX
Können Sie die vollständige Definition für die 'Task' Klasse veröffentlichen? – SingleNegationElimination