你怎么重载'<'运算符来比较同一类的对象?

时间:2017-06-26 03:28:20

标签: c++

现在我有一个课程项目

   class Item{
        public:

            short p;        //profit
            short w;        //weight
            bool *x;        //pointer to original solution variable
            void set_values (short p, short w, bool *x);

    };

我需要比较两个不同的实例,以便检查每个实例的值并返回true / false

 if (Item a < Item b){
       //do something
 }

我该怎么做?我一直在阅读cppreference,但我真的不明白该怎么做。

3 个答案:

答案 0 :(得分:6)

非常简单,

bool Item::operator<(const Item& other) const {
    // Compare profits
    return this->p < other.p;
}

答案 1 :(得分:2)

要将左侧pw与右侧pw进行比较,请使用以下代码:

class MyClass
{
public:
    short p;
    short w;
    friend bool operator<(const MyClass& lhs, const MyClass& rhs)
    {
        return lhs.p < rhs.p && lhs.w < rhs.w;
    }
};

答案 2 :(得分:1)

例如,如果要比较p,代码应如下所示:

class Item {
private:
...
public:
    friend bool operator < (const Item& lhs, const Item& rhs) {
        return lhs.p < rhs.p;
    }
};