c ++如何将对象指针发送到函数(指针列表排序)

c++ how to send object pointer to function (sort list of pointers )

我正在使用

std::list<Employee*> Employees;

员工是 class 所以我的问题是我需要对列表进行排序,为此我必须定义 operator < 但我不知道如何定义运算符来获取 Employee* 对象 这是我的定义

bool operator <(const Employee *_employee) const { return (id < _employee->id); }

但它只适用于 Employee < Employee* 但我需要操作员在 Employee* < Employee*

上工作

或者如果有其他排序列表的解决方案很好帮助

你不需要提供operator<you can't, with both arguments being pointers(它们被认为是内置类型,并且已经有一个内置的operator<语言不会让你改变)。

改为使用 second std::list::sort overload,使用自定义比较函数
(具有两个参数的非成员函数):

bool employee_ptr_cmp(Employee const* lhs, Employee const* rhs) { ... }
...
Employees.sort(employee_ptr_cmp);

或就地定义的 lambda 函数:

Employees.sort([](Employee const* lhs, Employee const* rhs) { ... });

你应该明白你上面的代码做了什么。它允许您按此顺序比较 const EmployeeEmployee const*。它们不是两个指针。也优于overload binary operators as non-member functions.