我正在尝试比较一个名为 Persons 的对象列表以进行快速排序。该对象包含名字、姓氏、SSN 和电话号码的字符串,以及一些有用的成员。
class Person
{
protected:
string firstname, lastname, social, birthday;
public:
Person(string, string, string, string); //store all values in strings for easy comparison and because no manipulation is necessary
~Person();
string Get(int type); //allows retrieval of protected members of object
void Print();
bool operator > (const Person& pivot) const;
//bool operator < (const Person &pivot);
};
我正在尝试使用运算符重载来确定两个 Person 对象中的哪一个更大。
bool Person::operator > (const Person& pivot) const
{
if(this->firstname > pivot.firstname)
return true;
if(this->firstname < pivot.firstname)
return false;
if(this->lastname > pivot.lastname)
return true;
if(this->lastname < pivot.lastname)
return false;
if(this->birthday > pivot.birthday)
return true;
if(this->birthday < pivot.birthday)
return false;
if(this->social > pivot.social)
return true;
if(this->social < pivot.social)
return false;
}
但是,这似乎根本不起作用,因为当我跑步时
Person * B = new Person("1234", "Donny", "Smith", "123456780");
Person * pivot = new Person("9345", "John", "Phillip", "234598765");
if (B > pivot);
cout << "hooray\n";
if(pivot > B)
cout << "Not hooray\n";
两个 if 语句的内容都被执行。我完全糊涂了,但这可能是一些非常愚蠢的错误。