2014-10-28 65 views
0

我得到这个错误:C++减少操作

Error 1 error C2678: binary '<' : no operator found which takes a left-hand operand of type 'const Data' (or there is no acceptable conversion)

但我的结构是这样定义的:

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; 
    } 
}; 

我觉得我有“<”操作,但是编译器告诉我不要”吨。

有一件事要提,现在我正在比较const Data < Data类型,也许那const使一些坏事。

我认为这只是一个小的失误,但我就是不能看到它......

+4

'const的布尔操作符<(常量数据与rightData)'应该是'布尔操作符<(常量数据与rightData)const' – 2014-10-28 09:22:18

回答

7

您需要:

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

还有String类也需要运营商,如果它没有。

+0

我有'的typedef的std :: string字符串;'所以我想不需要那个。 – user2935430 2014-10-28 09:33:34

+0

小心添加为什么'const bool'是有效的语法和它的意思? – Lumen 2014-10-28 09:54:42

2

你需要一个const的功能之后不前

bool operator<(const Data & rightData) const 
0

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

所以,作为其他的答案说,你需要一个可以调用的函数上的const Data

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