【发布时间】:2023-03-27 08:03:02
【问题描述】:
我有一个非常简单的方法,并且它的 const 重载。
Sy_animatable::PropertyTimeLine&
Sy_animatable_imp::getPropertyTimeLine( const QString& property )
{
if ( !properties_.contains( property ) ) {
throw Sy_unknownAnimPropertyException( property );
}
return properties_[property];
}
const Sy_animatable::PropertyTimeLine&
Sy_animatable_imp::getPropertyTimeLine( const QString& property ) const
{
if ( !properties_.contains( property ) ) {
throw Sy_unknownAnimPropertyException( property );
}
return properties_[property]; // "warning: returning reference to temporary"
}
我不明白这个警告有两个原因:
-
properties_是一个成员变量,它的下标运算符(它是一个QMap)返回一个引用,因此不应该有任何临时变量,并且它在对象的生命周期内是持久的。 - 为什么警告出现在 const 重载而不是原来的?
我可以#pragma 隐藏警告的行,但我真的很想知道它为什么给我警告 - 有什么建议吗?
【问题讨论】:
-
另一个使用 stdlib 容器而不是 Qt 的糟糕传真的理由。