VC ++ 2012上的C ++中的自定义排序函数会为以下代码引发编译错误。
class Segmenter(){
public:
vector<vector<float>> scanned;
void modifyAndSort();
bool sort_fn(const vector<float>&, const vector<float>&);
};
void Segmenter::modifyAndSort(){
// Modify scanned
// ...
sort(scanned.begin(), scanned.end(), sort_fn);
}
bool Segmenter::sort_fn(const vector<float>& x, const vector<float>& y){
return ((x[0]*x[1]) < (y[0]*y[1]));
}
引发的错误是:
Error 3 error C3867: 'Segmenter::sort_fn': function call missing argument list; use '&Segmenter::sort_fn' to create a pointer to member
最佳答案
你需要:
sort(scanned.begin(), scanned.end(), std::bind(&Segmenter::sort_fn, this));
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
不要忘记
#include <functional>
。关于c++ - 自定义排序比较功能引发编译错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40314474/