gpt4 book ai didi

C++ 链表 - 构造函数和运算符重载

转载 作者:行者123 更新时间:2023-11-28 05:45:15 27 4
gpt4 key购买 nike

我编写了一个运行链表的航类预订系统 list<Passenger> flight list .

我认为我编写的函数应该可以工作,但我无法测试它们,因为我无法正确设置乘客等级。

(数据库.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;
};

(数据库.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;

比较应该返回一个bool,而不是一个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);
}

这里是 online demo

关于C++ 链表 - 构造函数和运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36354623/

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