我有一个名为“Item”的类,我正在尝试将项目插入到一组项目中。
std::set<Item>::iterator it;
_items.insert(it, newItem);
但它给了我这个奇怪的错误
Error 1 error C2678: binary '<' : no operator found which takes a left-hand operand of type 'const Item' (or there is no acceptable conversion)
即使我确实实现了这个操作符。
bool Item::operator<(Item& other)
{
return _serialNumber < other._serialNumber;
}
我不明白为什么我在这个函数中需要这个运算符。
有人知道问题是什么吗?
提前致谢!
答案 0 :(得分:4)
您应该将定义更改为: -
bool Item::operator<( const Item& other) const
^^^^^ ^^^^^
{
return _serialNumber < other._serialNumber;
}
答案 1 :(得分:0)
“我不明白为什么我在这个函数中需要这个运算符。”
这是因为您需要确保在Item
类的 rvalue 实例上调用此运算符函数。这是std::set
Item
(和其他容器类,其中{{1}}应该用作键)。