У меня есть класс под названием «Item», и я пытаюсь вставить элемент в набор элементов.Почему компилятор говорит, что я не могу вставить элемент в std :: set <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;
}
Я не понимаю, зачем мне этот оператор в этой функции.
Кто-нибудь знает, в чем проблема?
Заранее благодарен!
Подсказка была при ошибке: 'const Item', ваш оператор должен принимать другие значения const ref. (Возможно, вы также должны сделать оператор const) – Borgleader
Реализовать bool Item :: operator <(const Item & other) – PaulD
Кроме того, ваш итератор 'it' не ссылается ни на что, но вы используете его в вызове' insert'. – PaulMcKenzie