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