我重载了以下大于运算符:
bool operator > (Person & a, Person & b)
{
//firstname is a string data type
return (a.FirstName > b.FirstName);
}
如果我有以下内容,则可以正常工作:
Person a = myPersonA;
Person b = myPersonB;
return myPersonA > myPersonB;
但是,在我的Person
类中,我定义了一个Person getByID(int id)
函数,它通过给定的 ID 返回一个 Person 的实例。如果我尝试将我的运算符与此函数的返回值一起使用,如下所示:
bool whosGreater = listPeople.getById(1) > listPeople.getById(2);
我明白了"Error: no match for operator >(Person&, Person&)"
但如果我执行以下操作,它可以正常工作:
Person a = listPeople.getById(1);
Person b = listPeople.getById(2);
bool whosGreater = a > b;
有什么我在这里看不到的吗?在我看来它应该工作。
PS:这是一个家庭作业,所以我真的可以摆脱声明变量并将函数返回的内容分配给他们并摆脱它,但我想知道发生了什么以便我可以学习。我试过用谷歌搜索它,但我想不出正确的问题。