使用 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。更短更清晰。
我需要你的帮助来解决下一个问题。所以问题是,当我在集合(数据结构)上使用 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。更短更清晰。