コンパイラがc++11をサポートしている場合は、ラムダを使用できます
std::sort(AllObjects.GetData(), AllObjects.GetData() + AllObjects.GetSize(),
[](const CString& item1, const CString& item2) {
return MyClass::Compare( Order(_T("DESC")), item1, item2);
});
c ++ 11がない場合は、ファンクターの代わりに関数を使用することで、少しだけ単純化できます。
static inline bool Comparer(const CString& item1, const CString& item2) {
return MyClass::Compare(Order(_T("DESC")), item1, item2);
}
それを最後のパラメータとして使用します。
残念ながら(?)、単項関数オブジェクトまたはバイナリ関数オブジェクトの関数ラッパーしかありません。三項関数オブジェクトのラッパーもある場合は、次のようなことを行うことができます。
std::sort(AllObjects.GetData(), AllObjects.GetData() + AllObjects.GetSize(),
std::bind1st(std::ptr_fun(MyClass::Compare), Order(_T("DESC"))));
boost --bindの使用を検討している場合は、代わりにこれを試すことができます
std::sort(AllObjects.GetData(), AllObjects.GetData() + AllObjects.GetSize(),
boost::bind(MyClass::Compare, Order(_T("DESC")), _1, _2));
std::bind
これはc++11と同等です。