C++ 对std::sort使用比较器函数时出现异常错误

C++ 对std::sort使用比较器函数时出现异常错误,c++,sorting,stl,C++,Sorting,Stl,我正在为topcoder SRM(623)编码,突然比较器函数开始给出错误。我看到前面关于comparator函数的问题,但在以下用法中找不到错误: class CatchTheBeatEasy { public: bool comp( p p1, p p2){ return (p1.time>p2.time); } string ableToCatchAll(vector <int> x, vector <int> y) {

我正在为topcoder SRM(623)编码,突然比较器函数开始给出错误。我看到前面关于comparator函数的问题,但在以下用法中找不到错误:

class CatchTheBeatEasy
{
public:
    bool comp( p p1, p p2){ return (p1.time>p2.time); }
    string ableToCatchAll(vector <int> x, vector <int> y)
    {
        vector < p > points;
        int i=0;
        rep (i,0,x.size())
        {
            p temp;
            temp.time=y[i];
            temp.x=x[i];
            points.push_back(temp);
        }


                    sort(points.begin(),points.end(),comp); //ERROR Here



        int curx=0, curtime=0;
        rep (i,0,points.size())
        {
            if ( points[i].time-curtime < abs(points[i].x-curx) )
                return "Not Able To Catch";
            else
            {
                curtime += abs(points[i].x-curx);
                curx=points[i].x;
            }
        }
        return "Able To Catch";
    }
};
类捕获Beat轻松
{
公众:
boolcomp(p1,p2){return(p1.time>p2.time);}
字符串EnableToCatchall(向量x、向量y)
{
向量点;
int i=0;
代表(i,0,x.size())
{
p温度;
温度时间=y[i];
温度x=x[i];
点。推回(温度);
}
排序(points.begin(),points.end(),comp);//此处出错
int curx=0,curtime=0;
rep(i,0,points.size())
{
if(点[i]。时间缩短
错误:

  • 错误C3867:“CatchTheBeatEasy::comp”:函数调用缺少参数列表;使用“&CatchTheBeatEasy::comp”创建指向的指针 成员
  • 错误C2780:'void std::sort(_RanIt,_RanIt)':需要2个参数-提供3个参数
  • 请帮忙


    作为侧节点,rep是“for”的宏(i=…;i要将成员函数用作比较函数,必须声明为
    静态

    上帝,认为缺少一个关键字会让我损失近400分和5分。残酷的世界!谢谢你的帮助。你能解释一下为什么成员函数需要这样做吗?@Ambar因为调用时,它是不是针对对象调用的,而是作为一个自由函数调用的。我现在明白了。谢谢。@TristanBrindle是的,但我不习惯std::bind,因此“static”对我很有用!