C++较少的运算符

use*_*430 0 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;
    }
};
Run Code Online (Sandbox Code Playgroud)

我想我有'<'运算符,但是编译器告诉我不要.

有一点要提,现在我正在比较const Data< Data类型,也许这const会让事情变得糟糕.

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

ST3*_*ST3 7

你需要:

bool operator<(const Data& rightData) const
{
    return strData < rightData.strData;
}
Run Code Online (Sandbox Code Playgroud)

String如果没有,那么班级也需要运营商.