传递我的引用c ++时使用类的公共函数时出错

时间:2015-08-09 21:50:18

标签: c++ operator-overloading pass-by-reference

我试图为矢量创建一个排序函数。 这就是我写的

struct Xgreater
    {
        bool operator()( const lineCommand& lx, const lineCommand& rx ) const {
            return lx.getEndTime() < rx.getEndTime();
        }
    };

我的班级在哪里:

    class lineCommand {
    public:
        lineCommand(float startTime, float endTime);
        virtual ~lineCommand();
    //those are short inline functions:

    //setting the starting time of the command
    void setStartTime(const float num){mStartTime=num;};
    //setting the ending time of the command
    void setEndTime(const float num){mEndTime=num;};
    // returning the starting time of the command
    float getStartTime(){return mStartTime;};
    // returning the ending time of the command
    float getEndTime(){return mEndTime;};

private:
    float mStartTime;
    float mEndTime;
};

不在xgreater中。我在日食中得到错误说:

Invalid arguments '
Candidates are:
float getEndTime()

通过:

lx.getEndTime and rx.getEndTime

1 个答案:

答案 0 :(得分:4)

按以下方式声明函数

float getEndTime() const {return mEndTime;};
                   ^^^^^

在此运算符声明中

    bool operator()( const lineCommand& lx, const lineCommand& rx ) const {
        return lx.getEndTime() < rx.getEndTime();
    }

参数lxrx是常量引用。因此,您可以使用这些引用仅使用限定符const调用成员函数。

您可以使用相同的方式声明函数getStartTime

float getStartTime() const {return mStartTime;};