我有一个名为Task的类
//Attributes
int earliestStartingTime, earliestEndTime, latestStartingTime, latestEndTime, duration, differ;
char TaskPosition;
list<Task*> predecessors;
list<Task*> successors;
//Constructor
Task::Task(char TaskPosition2, int duration, list<Task*> predecessors)
{
this-> TaskPosition = TaskPosition2;
this -> duration = duration;
for(list<Task*>::iterator it = this-> predecessors(); it != this->predecessors.end(); it++)
{
this-> predecessors.push_back(*it);
}
}
我正在尝试逐行读取文件并将数据存储到列表任务中。
在文件中,数据存储为
A(3)
B(4),A
C(2),A
E(5),A
G(3),A
Ĵ(8),B,H
H(7),C,E,G
I(6),G
F(5),H
M(4),我 ...
我希望能够将它们添加到Task列表中,如下所示
任务(char TaskPosition,int duration,list predecessors) 例如:
A是任务位置
3是持续时间
没有前辈
B是任务位置
4是持续时间
A是前身
... J是任务位置
8是持续时间
B,H是J
的前身等等。
我稍后会对该列表应用一些计算,例如,从A到Z等的最短路径是什么......
但我仍然坚持阅读文件并将其添加到列表中。
这是我到目前为止所拥有的。
int _tmain(int argc, _TCHAR* argv[])
{
string line;
list< Task>* allTask = new list<Task>;
const string file = "Test01.txt"; // text file
ifstream file;
if(file.is_open())
{
while(getline(file, line, ','))
{
allTask.push_back(line);
}
}
}
这一行
allTask.push_back(line);
给我一条错误消息
the lest side of .push_back must have class/struct/union
所以我不知道该怎么办。任何人都可以请帮我弄清楚如何阅读文件请将数据添加到列表中。
谢谢
答案 0 :(得分:1)
allTask
是一个指针,因此您必须使用->
直接使用成员函数。虽然没有理由将allTask
作为指针,但不要改变它。你可以简单地使用
list< Task> allTask;
现在allTask
是一个自动对象,您可以使用.
来调用它的成员函数。
答案 1 :(得分:0)
您可能会很好地阅读并可能使用序列化反序列化库。这将完全符合您的要求,它将让您深入了解如何以传统方式进行操作。