C++ 试图获取要从文件C+;读取的链接列表+;

C++ 试图获取要从文件C+;读取的链接列表+;,c++,C++,我正在为一个类队列定义一个成员函数,它本质上是一个带有类Car节点的链表。我试图创建一个类方法,从文件中逐行读取队列。我编辑了一组cout语句来跟踪每个迭代,我可以看到我的测试文件已经变成了node类的一个实例。但是,我的输出是一个队列,其中有一个节点,但有一个count属性,反映消失的节点。以下是我的功能: void Queue::read(string filename) { ifstream in; in.open(filename); Car temp;

我正在为一个类队列定义一个成员函数,它本质上是一个带有类Car节点的链表。我试图创建一个类方法,从文件中逐行读取队列。我编辑了一组cout语句来跟踪每个迭代,我可以看到我的测试文件已经变成了node类的一个实例。但是,我的输出是一个队列,其中有一个节点,但有一个count属性,反映消失的节点。以下是我的功能:

void Queue::read(string filename)
{
    ifstream in;
    in.open(filename);
    Car temp;
    Car last;
    string name;
    string model;
    string plate;
    string vip;
    getline(in, name);
    while (!in.eof()) {
        last = temp;
        getline(in, name);
        getline(in, model);
        getline(in, plate);
        getline(in, vip);
        if (vip == "1") {
            temp = Car(name, model, plate, true);
        }
        else {
            temp = Car(name, model, plate, false);
        }
        count++;
        if (count == 1) {
            front = &temp;
        }
        else {
            last.next = &temp;
            back = &temp;
        }
    }
    last.next = NULL;
    in.close();
    std::cout << endl << *front;
}
void Queue::read(字符串文件名)
{
如果输入;
in.open(文件名);
汽车温度;
最后一辆车;
字符串名;
弦模型;
弦板;
串贵宾;
getline(in,name);
而(!in.eof()){
最后=温度;
getline(in,name);
getline(in,model);
getline(英寸,板);
getline(in,vip);
如果(vip=“1”){
温度=汽车(名称、型号、铭牌、真实值);
}
否则{
温度=汽车(名称、型号、铭牌、假);
}
计数++;
如果(计数=1){
前部=&temp;
}
否则{
last.next=&temp;
返回=&temp;
}
}
last.next=NULL;
in.close();

std::cout
temp
是一个局部变量,可用于所有节点,因此它们都指向相同的
Car
。应使用某种形式的动态内存分配(如
std::unique\u ptr
,或
std::shared\u ptr
)前面和后面是什么?你是说
last.front
last.back
也许?你可能在
getline(in,name)上达到
EOF
---然后呢?前后变量是队列类的属性,显示链接列表的第一个和最后一个成员。最后一个可能是一个选择不当的名称-我想区分当前临时节点和它前面的一个,以便将它们链接在一起。我不确定在这种情况下如何使用共享或唯一指针,但是我想用动态记忆做点什么。