尝试显示

时间:2016-05-10 12:15:23

标签: c++ vector

我目前的项目遇到了一些麻烦。我有一类乔布斯,它们保存在vector内。当我尝试push_backpop_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;
  }

可能有什么不对?有什么建议吗?

感谢。

1 个答案:

答案 0 :(得分:3)

在您的代码中

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

这意味着当您调用该函数时,您可以复制该向量并将其传递给该函数。您可以向其添加值,但实际上是要添加到副本中,该副本在您返回时会被销毁。

您应该将其修改为

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

注意向量后的&