Я хотел бы вернуть константную ссылку на значение QMap. Насколько я понимаю, QMap отличается тем, что если вы попытаетесь получить доступ к несуществующему ключу, он создаст значение с помощью конструктора по умолчанию и вернет его. Но если я все же правильно понимаю, ссылка будет временной и поэтому я получаю предупреждение.
У меня есть этот фрагмент кода:
const T &getSelectionDesc(QListWidgetItem *item)
{
if (!indexes.contains(item))
indexes.insert(item, T(item->text()));
return indexes.value(item);
}
Как видите, я уже убедился, что ключ что-то возвращает, я создаю объект в первый раз, когда он требуется, а затем сохраняю его в QMap для дальнейшего использования.
Несмотря на это, я все еще получаю предупреждение, что я должен изменить здесь, чтобы исправить поведение?
Изменить:
Вот как я определил indexes
:
QMap<QListWidgetItem *, T> indexes;
Это предупреждение, которое я получаю:
В экземпляре «const T& SelectListDialog::getSelectionDesc(QListWidgetItem*) [с T = BackgroundDesc]»:
предупреждение: возвращается ссылка на временный [-Wreturn-local-addr]
вернуть indexes.value (элемент);
indexes
? - person Holt   schedule 10.01.2019