Можно ли вернуть ссылку на объект внутри мультикарты? Вот что я пытаюсь:
return &this->noteList.find(key)->second;
Но я получаю Non-const lvalue reference to type 'Note' cannot bind to a temporary of type 'Note *'
поэтому мне было интересно, если это вообще возможно, и если да, то как? notelist
это мультикарта и имеет Note
объекты внутри него.
this->noteList.find(key)->second
уже дает вам ссылку на объект внутри мультикарты (если this->noteList
это мультикарта).
Префикс этого выражения с амперсандом (&
), вы получаете указатель на такой объект (если этот оператор не перегружен)
Тогда просто вернись second
без амперсанда (&
) как уже отмечали другие.
Если noteList
или ваш метод const
, вы также должны изменить свой тип возврата на const, например:
const Note &getRef(Note note) const;
Не по теме: Обычно вам также следует изменить параметр на const Note ¬e
получая:
const Note &getRef(const Note ¬e) const;
или же
Note &getRef(const Note ¬e);