我目前的项目遇到了一些麻烦。我有一类乔布斯,它们保存在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;
}
可能有什么不对?有什么建议吗?
感谢。
答案 0 :(得分:3)
在您的代码中
void Job::generirateActivities(vector<Job> job_list) {
这意味着当您调用该函数时,您可以复制该向量并将其传递给该函数。您可以向其添加值,但实际上是要添加到副本中,该副本在您返回时会被销毁。
您应该将其修改为
void Job::generirateActivities(vector<Job>& job_list) {
注意向量后的&
。