2016-05-10 2 views
0

У меня возникли проблемы с моим текущим проектом. У меня есть класс Джобс, который сохраняется внутри vector. Когда я пытаюсь выполнить push_back или pop_back работа моя программа работает хорошо (я могу удалить только столько раз, сколько раз добавляю работу). Но когда я пытаюсь отобразить то, что находится внутри моего vector, я получаю сообщение: ничего не отображать, vector пуст, altought I 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) {' - you * copy * исходный вектор, а затем прилагается к копии, а не оригинал. Используйте ссылку: 'vector & 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

А также ничего не генерируется (я знаю, потому что метод delete говорит, что ничего не удалять). – HC1122