Если у вас есть доступ к C ++ 14 или C ++ 17, тогда это:
std::sort(EmpList.begin(), EmpList.end(),
[](const auto& lhs, const auto& rhs) {
return lhs->getPayment()->getType() < rhs->getPayment()->getType();
});
Должен делать то, что вам нужно.
Если вы используете C ++ 11, тогда:
std::sort(EmpList.begin(), EmpList.end(),
[](const WhateverTypeIsInEmployeeList& lhs, const WhateverTypeIsInEmployeeList& rhs) {
return lhs->getPayment()->getType() < rhs->getPayment()->getType();
});
Должен делать работу.
Для C ++ 98/03 вам нужно написать функцию / класс для использования вместо лямбды.
(Кстати, я предполагаю, что тип, возвращаемый getPayment()->getType()
, имеет operator<
, который удовлетворяет строгому требованию слабого упорядочения, необходимому для работы std::sort
)