【发布时间】:2019-01-10 17:16:27
【问题描述】:
我想返回一个对 QMap 值的 const 引用。据我了解,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*) [with T = BackgroundDesc]' 的实例化中:
警告:返回对临时 [-Wreturn-local-addr] 的引用
返回索引.value(item);
【问题讨论】:
-
告诉我们确切的警告和
indexes的声明? -
@Holt 添加到 OP 中