sort(mMyClassVector.begin(), mMyClassVector.end(),
[](const MyClass & a, const MyClass & b)
{
return a.mProperty > b.mProperty;
});
Я хотел бы использовать лямбда-функцию для сортировки пользовательских классов вместо привязки метода экземпляра. Однако приведенный выше код дает ошибку:
ошибка C2564: 'const char *': преобразование стиля функции во встроенный тип может принимать только один аргумент
Он отлично работает с boost::bind(&MyApp::myMethod, this, _1, _2)
.
Ответы:
Понял.
Я предполагал, что он выяснит, что оператор> вернул bool (согласно документации). Но, видимо, это не так.
источник
operator>
.a.mProperty>b.mProperty
, определенно будет получено значение типа bool.operator<
, не такoperator>
ли?<
в стандартном порядке возрастания. Я отредактировал ответ, чтобы было ясно, что это нисходящий вид, но, по-видимому, мое редактирование было бесполезным и было стерто!Для большого количества кода вы можете использовать его так:
Замени "vec" на свой класс и все.
источник
Может быть проблема в строке "a.mProperty> b.mProperty"? У меня есть следующий код для работы:
Выход:
источник