sort(mMyClassVector.begin(), mMyClassVector.end(),
[](const MyClass & a, const MyClass & b)
{
return a.mProperty > b.mProperty;
});
Saya ingin menggunakan fungsi lambda untuk mengurutkan kelas kustom sebagai pengganti metode instance. Namun, kode di atas menghasilkan kesalahan:
kesalahan C2564: 'const char *': konversi gaya-fungsi ke tipe bawaan hanya dapat mengambil satu argumen
Ini berfungsi dengan baik boost::bind(&MyApp::myMethod, this, _1, _2)
.
Jawaban:
Mengerti.
Saya berasumsi akan mengetahui bahwa> operator mengembalikan bool (per dokumentasi). Namun ternyata tidak demikian.
sumber
operator>
, kalau begitu.a.mProperty>b.mProperty
pasti akan menghasilkan bool.operator<
, tidakoperator>
?<
, untuk pesanan naik standar. Saya mengedit jawaban untuk memperjelas bahwa itu adalah jenis yang menurun tetapi ternyata hasil edit saya tidak membantu dan terhapus!Untuk banyak kode, Anda dapat menggunakannya seperti ini:
Ganti "vec" dengan kelas Anda dan hanya itu.
sumber
Bisakah masalahnya dengan baris "a.mProperty> b.mProperty"? Saya mendapatkan kode berikut ini untuk berfungsi:
Outputnya adalah:
sumber