我有一个班级项目。项目本身有不同的任务。所以我在Project的构造函数中创建了一个for循环来添加' Task'的不同对象。
我的代码如下:
Project.cpp中的:
Project::Project(int readnumber)
{
//constructor
int Projectnumber= 1; // ????
int Projectduration = 0;
int Numbertasks = 0;
ReadRanGenData(readnumber);
Numbertasks = numberAct;
vector<Task> Tasks(Numbertasks);
for (int i = 0; i < numberAct; i++)
{
Tasks[i].SetTaskNumber(i + 1);
cout << "in sub: " << Tasks[i].GetTaskNumber();
}
}
在这个构造函数中,我创建了一个任务向量。这些任务有自己的属性(例如任务号等)。 在task.cpp中,我有设置变量的方法(SetTaskNumber)。
我也有调用项目数据的方法:
vector<Task> Project::GetTasks()
{
cout << "test" << Tasks[0].GetTaskNumber();
return Tasks;
}
但是当我试图测试我是否可以访问任务编号时,我得到了错误:向量下标超出范围。 然后我尝试直接在构造函数中访问tasknumber(cout&lt;&lt;&#34;在sub:&#34;&lt;&lt; Tasks [i] .GetTaskNumber();)并且没有出现错误,我得到了正确的结果。 我该如何解决这个问题?
还有第二个问题:在构造函数中我写了int projectnumber = 1;但理想情况下,当我创建一个新对象时,项目编号总是会增加1。我想用int Projectnumber = ++ 1做到这一点;但是当我尝试时,我收到了一个错误。