我正在查看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;
}
Run Code Online (Sandbox Code Playgroud)
我用它像:
sort(clauses.begin(), clauses.end(), clauseComparator);
Run Code Online (Sandbox Code Playgroud)
但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
Run Code Online (Sandbox Code Playgroud)
首先是什么错误(缺少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
Run Code Online (Sandbox Code Playgroud)
这里有什么不对?在我的理解中,它应该传递一个我理解也应该被接受的函数指针sort?
您需要将您的成员函数设置为静态才能被访问sort.在您的班级标题中,请声明如下:
static bool QueryEvaluatorPrivate::clauseComparator(const QueryClause & cl1, const QueryClause & cl2);
没有必要使用bind,因为您的比较器最有可能(或不应该)需要访问类成员.
| 归档时间: |
|
| 查看次数: |
3895 次 |
| 最近记录: |