私は非常に単純な方法を持っており、それを過負荷にしています。
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"
}
私は2つの理由で警告を理解していません:
properties_
はメンバー変数であり、その添え字演算子(これはaQMap
)は参照を返すため、一時的なものがあってはならず、オブジェクトの存続期間中は永続的です。- 警告が元のオーバーロードではなくconstオーバーロードに表示されるのはなぜですか?
警告を非表示にする行はでき#pragma
ますが、なぜ警告が表示されるのかを知りたいのですが、何か提案はありますか?