我正在查看http://www.cplusplus.com/reference/algorithm/sort/并希望实现类似的东西:我定义了一个函数clauseComparator
,就像myfunc
提供的链接中的示例中给出的那样。
bool QueryEvaluatorPrivate::clauseComparator(QueryClause cl1, QueryClause cl2) {
int priority1 = clausePriority(cl1),
priority2 = clausePriority(cl2);
return priority1 < priority2;
}
我像这样使用它:
sort(clauses.begin(), clauses.end(), clauseComparator);
但是VS抱怨:
Error 4 error C3867: 'QueryEvaluatorPrivate::clauseComparator': function call missing argument list; use '&QueryEvaluatorPrivate::clauseComparator' to create a pointer to member h:\dropbox\sch\cs3202\code\source\query\query evaluator\queryevaluator.cpp 138
Error 5 error C2780: 'void std::sort(_RanIt,_RanIt)' : expects 2 arguments - 3 provided h:\dropbox\sch\cs3202\code\source\query\query evaluator\queryevaluator.cpp 138
首先出了什么问题(缺少 arg 列表)?我尝试按照错误中给出的建议添加&
并最终得到
Error 4 error C2276: '&' : illegal operation on bound member function expression h:\dropbox\sch\cs3202\code\source\query\query evaluator\queryevaluator.cpp 138
Error 5 error C2780: 'void std::sort(_RanIt,_RanIt)' : expects 2 arguments - 3 provided h:\dropbox\sch\cs3202\code\source\query\query evaluator\queryevaluator.cpp 138
这里有什么问题?在我的理解中,它应该传递一个我理解的函数指针也应该被接受sort
?