2016-05-10 10 views
0

私の現在のプロジェクトにいくつか問題があります。私にはジョブのクラスがあり、それはvectorの中に保存されています。私がpush_backまたはpop_backジョブを試してみると、私のプログラムはうまくいく(私は何度も何度も何度も、私は仕事を追加する回数だけ削除することができます)。 しかし、私が何かを表示しようとすると、vectorメッセージが表示されます。何も表示されません、vectorは空です、私はpush_backいくつかの仕事をしました。表示しようとしたときにベクトルに値がありません

void Job::generirateActivities(vector<Job> job_list) { 

    Smt s1("Default1", 1, 2, 3); 
    Smt s2("Default2", 2, 3, 4); 

    Date d1(1, 1, 2001); 
    Date d2(2, 2, 2002); 

    Job j1(&s1, &d1); 
    Job j2(&s2, &d2); 

    job_list.push_back(a1); 
    job_list.push_back(a2); 
} 

と印刷のために私が使用しています:

void Job::printJobs(vector<Job> job_list) { 
    if (job_list.empty()) 
    cout << "Nothing to display, vector is empty." << endl; 
    else { 
    for (unsigned int i = 0; i < job_list.size(); i++) 
     cout << i + 1 << ". " <<job_list[i].toString() << endl; 
    } 

を間違っている可能性が何?助言がありますか?

ありがとうございました。あなたのコードで

+4

'generirateActivities(vector job_list){' - あなたは*元のベクトルをコピーして元のコピーではなくコピーに追加します。参照: 'ベクトル&job_list'を使用してください。印刷するのと同じです(ただし、 'const'にしてください)。 – BoBTFish

+0

&project.exeが動作しなくなりました... – HC1122

+0

@BoBTFishなぜ答えとして投稿しませんか? – CinCout

答えて

3

あなたはこれを使用すると、関数を呼び出すときに、ベクターのコピーを作成し、関数に渡すことを意味

void Job::generirateActivities(vector<Job> job_list) { 

持っています。あなたはそれに値を追加しますが、あなたは実際にコピーに追加しています。あなたが戻ったときに破棄されます。

あなたは

void Job::generirateActivities(vector<Job>& job_list) { 

注意ベクトル後&にそれを変更する必要があります。

+0

それは私のプログラムがクラッシュする。 メインの問題かもしれませんか? object.displayActivity(job_lists); – HC1122

+0

また、何も生成されていません(削除メソッドは、削除するものがないことを知っています)。 – HC1122

関連する問題