C++ 显示和保存对象的链接列表
我编写了许多函数来在对象的链接列表上实现。我只剩下写C++ 显示和保存对象的链接列表,c++,linked-list,iterator,C++,Linked List,Iterator,我编写了许多函数来在对象的链接列表上实现。我只剩下写display\u list()和save\u to\u file()函数了,这对我来说相当困难。我目前已经有了如何使用字符串而不是乘客对象进行转换的代码,但是我的转换都不起作用。以下仅为文件的相关部分 main.cc case 5: { display_list(); break; } case 6: { save_to_file("ticket_reservations.dat"); break; }
display\u list()
和save\u to\u file()
函数了,这对我来说相当困难。我目前已经有了如何使用字符串而不是乘客对象进行转换的代码,但是我的转换都不起作用。以下仅为文件的相关部分
main.cc
case 5:
{
display_list();
break;
}
case 6:
{
save_to_file("ticket_reservations.dat");
break;
}
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();
}
数据库.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
包括
#包括
#包括
#包括
#包括
#ifndef客运站
#定义乘客
使用std::string;
使用std::cin;
使用std::cout;
使用std::list;
使用std::endl;
头等舱乘客{
公众:
乘客(){}
乘客(绳子,绳子,绳子);
布尔运算符==(常数乘客和)常数;
布尔运算符
check\u reservation
函数的参数应该通过引用传递,或者应该实现Passenger
类的assgin函数,该函数中没有
bool Flightlist::check_reservation(Passenger & p);
或:
class乘客{
公众:
乘客(){}
乘客(绳子,绳子,绳子);
乘客(乘客),;
无效运算符=(常数乘客和)常数;
布尔运算符==(常数乘客和)常数;
bool运算符check_reservation函数实际上是唯一在那里工作的函数?@Brittany否则,只需为PasengerI实现对象分配函数,不明白您的意思吗?对于显示列表和保存到文件类?@lulyoncheck_reservation
不修改参数,搜索将调用运算符==
。除了效率之外,没有理由将该参数作为参考(理想情况下,它将是const
),也不需要重载默认赋值运算符,它将按原样深度复制该类。(而且这两者都不能解决OP的问题)。最后,在哪个星球上是一个(不需要)重载赋值运算符const
?@Brittany我敦促您检查我在一般评论中提供的链接。它涵盖了关于运算符重载的各种主题,包括我认为您似乎需要的内容:重载流插入,std::ostream&operator从我看到的情况来看,您似乎缺少重载的>接线员
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;
};