我收到了这个错误:
错误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
造成了不好的事情。
我认为这只是一个小错误,但我看不出来......
答案 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;
}