「タスク」という名前のクラスとして次のデータ構造があります。
private:
string name;
int computation_time;
int period;
さらに、次の内容の ASCII ファイルがあります。
A 3 10
B 2 12
C 1 11
名前 = A、計算時間 = 3、期間 = 10 など....
今、私はファイルを読み込んで、Task-object を作成し、それをベクトルにプッシュしたいと思います:
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));
}
}
現在、 current_tasks ベクトルを調べると、要素がありますが、それらの値は in_file の値と一致しません。アウトコメントされた行を見てください。tmp_task オブジェクトは正確ですが、プッシュバックされると、上記のように値が失われます。
std::vector がメモリ割り当てを管理しているため、これはタスク クラスのコピー コンストラクタの問題でしょうか?
Linux x86 で g++ コンパイラを使用して netbeans を使用しています。
THX