C ++较少的运算符

时间:2014-10-28 09:21:08

标签: c++ operator-overloading

我收到了这个错误:

  

错误1错误C2678:二进制'<' :找不到哪个运营商需要   'const Data'类型的左手操作数(或者没有可接受的   转化率)

但我的结构定义如下:

struct Data
{
    String        strData;
    int           intData;
    double        doubleData;

    Data() : intData(-1), doubleData(-0.f)
    {}

    Data(const String& str, int i, double d) : strData(str), intData(i), doubleData(d)
    {}

    const bool operator<(const Data& rightData)
    {
        return strData < rightData.strData;
    }
};

我想我有'&lt;'运算符,但编译器告诉我不要。

有一点要提,现在我正在比较const Data&lt; Data类型,可能是const造成了不好的事情。

我认为这只是一个小错误,但我看不出来......

3 个答案:

答案 0 :(得分:7)

你需要:

bool operator<(const Data& rightData) const
{
    return strData < rightData.strData;
}

并且String类也需要运算符,如果它没有。

答案 1 :(得分:2)

你需要一个const之后的函数

bool operator<( const Data & rightData ) const

答案 2 :(得分:0)

const bool表示函数返回的bool是常量。 错误告诉你“左手操作数”应该是“类型'const数据'” 即一个const成员函数

所以,正如其他答案所说,你需要一个可以在const Data上调用的函数,即

bool operator<(const Data& rightData) const
{
    return strData < rightData.strData;
}