我已经编写了一个运行在链接列表之外的航空公司预订系统list<Passenger> flight list
。
我认为我编写的功能应该可以工作,但是由于无法正确完成我的乘客舱位,因此我无法对其进行测试。
(database.h)
class Passenger
{
public:
Passenger(string, string, string);
~Passenger();
Passenger operator==(const Passenger&) const;
Passenger operator<(const Passenger&) const;
void read_from_file(list<Passenger>&, string);
void insert(list<Passenger>&, string, string, string);
void remove(list<Passenger>&, string, string, string);
bool check_reservation(list<Passenger>&, string, string);
void display_list(list<Passenger>&);
void save_to_file(list<Passenger>&, string, string, string);
private:
string fname;
string lname;
string destination;
};
(database.cc)
Passenger::Passenger(string first, string last, string dest)
{
fname = first;
lname = last;
destination = dest;
}
Passenger::~Passenger()
{
}
Passenger Passenger::operator==(const Passenger&)
{
}
Passenger Passenger::operator<(const Passenger&)
{
}
应该重载运算符,以便比较名字和姓氏,以便按姓氏的字典顺序对列表进行排序。
朝着正确方向的任何观点都将很有帮助。
谢谢!
问题是您的操作员超负荷的原因:
Passenger operator==(const Passenger&) const;
Passenger operator<(const Passenger&) const;
比较应该返回abool
而不是a Passenger
。因此,尝试:
bool operator==(const Passenger&) const;
bool operator<(const Passenger&) const;
例如,具有以下实现:
// and don't forget the trailng const to match the signature !
bool Passenger::operator==(const Passenger& p) const
{
return fname==p.fname && lname==p.lname;
}
bool Passenger::operator<(const Passenger& p) const
{
return fname<p.fname || (fname==p.fname && lname<p.lname);
}
这里是在线演示
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句