使用 set find 函数,没有找到运算符

use set find function, no operator found

我需要你的帮助来解决下一个问题。所以问题是,当我在集合(数据结构)上使用 find 函数时,我遇到了以下问题(.find 问题是因为其中一个运算符 >,<,==)。

error C2679: binary '<' : no operator found which takes a right-hand operand of type 'const Item' (or there is no acceptable conversion

代码中发生错误的行-

if(items.find(itemList[option]) == items.end())
{
     items.insert(itemList[option]);
}

我的运算符 (==,<,>)-

bool Item::operator<(Item& other) const
{
if (this->_serialNumber < other._serialNumber)
{
    return true;
}
else
{
    return false;
}
}

bool Item::operator>(Item& other) const
{
if (this->_serialNumber > other._serialNumber)
{
    return true;
}
else
{
    return false;
}
}

bool Item::operator==(Item& other) const
{
if (this->_serialNumber == other._serialNumber)
{
    return true;
}
else
{
    return false;
}
}

您的运算符需要通过 const ref 获取参数:

bool Item::operator<(const Item& other) const

您可以自由地从非 const 转换为 const,但反过来不行,std::set 正在尝试比较 const T。

P.S:你可以将所有这些缩短为return _serialNumber > other._serialNumber;,不需要if/else。更短更清晰。