gpt4 book ai didi

c++ - 显示和保存对象的链接列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:47:04 26 4
gpt4 key购买 nike

我编写了很多函数来实现对象的链接列表。我剩下要写的就是 display_list()save_to_file() 函数,事实证明它们对我来说相当困难。我目前有关于如何使用字符串而不是 Passenger 对象完成它的代码,但我的转换都不起作用。以下仅是文件的相关部分。

ma​​in.cc

case 5: 
{
display_list();
break;
}

case 6:
{
save_to_file("ticket_reservations.dat");
break;
}

数据库.h

include<list>
#include<algorithm>
#include<iostream>
#include<string>
#include<fstream>
#ifndef passenger_h
#define passenger_h
using std::string;
using std::cin;
using std::cout;
using std::list;
using std::endl;

class Passenger {
public:
Passenger() {}
Passenger(string, string, string);
bool operator==(const Passenger&) const;
bool operator<(const Passenger&) const;
private:
string fname, lname, destination;

};

class Flightlist {
public:
int menu();
void read_from_file(string);
void insert(Passenger p);
void remove(Passenger p);
bool check_reservation(Passenger p);
void display_list();
void save_to_file(string)
private:
list<Passenger> flist;
};

#endif

数据库.cc

bool Flightlist::check_reservation(Passenger p)   //example of working function
{
list<Passenger>::iterator i1, i2;
i1 = flist.begin();
i2 = flist.end();
return flist.end() != find(flist.begin(), flist.end(), p);
}

void display_list()
{
flist.sort();
list<Passenger>::iterator i1, i2;
i1 = flist.begin();
i2 = flist.end();
for ( ; i1 != i2; ++i1) {
cout << *i1 << endl;
}
}

void save_to_file(string filename)
{
flist.sort();
list<Passenger>::iterator i1, i2;
i1 = flist.begin();
i2 = flist.end();
ofstream output(filename.c_str());
for ( ; i1 != i2; ++i1) {
output << *i1 << " ";
}
output.close();
}

排序应该取自重载运算符(== 和 <),以便它们按姓氏的字典顺序排序。

如有任何帮助,我们将不胜感激!

最佳答案

bool Flightlist::check_reservation(Passenger p);

check_reservation函数的参数应该传引用,或者实现Passenger类的assgin函数,这里面没有。

bool Flightlist::check_reservation(Passenger & p);

或:

class Passenger {
public:
Passenger() {}
Passenger(string, string, string);
Passenger(const Passenger&);
void operator=(const Passenger&) const;
bool operator==(const Passenger&) const;

bool operator<(const Passenger&) const;
private:
string fname, lname, destination;

};

关于c++ - 显示和保存对象的链接列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36382767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com