sort(mMyClassVector.begin(), mMyClassVector.end(),
[](const MyClass & a, const MyClass & b)
{
return a.mProperty > b.mProperty;
});
Gostaria de usar uma função lambda para classificar classes personalizadas no lugar de vincular um método de instância. No entanto, o código acima gera o erro:
erro C2564: 'const char *': uma conversão no estilo de função para um tipo interno pode levar apenas um argumento
Funciona bem com boost::bind(&MyApp::myMethod, this, _1, _2)
.
Respostas:
Entendi.
Eu assumi que descobriria que o operador retornou um bool (por documentação). Mas, aparentemente, não é assim.
fonte
operator>
, então.a.mProperty>b.mProperty
, definitivamente produzirá um bool.operator<
, nãooperator>
?<
, para ordem ascendente padrão. Editei a resposta para deixar claro que era do tipo descendente, mas aparentemente minha edição foi inútil e foi apagada!Para muito código, você pode usá-lo assim:
Substitua "vec" por sua classe e é isso.
fonte
O problema pode estar na linha "a.mProperty> b.mProperty"? Eu consegui o seguinte código para trabalhar:
A saída é:
fonte