Qt QList C3892:无法分配给常量变量
Posted
技术标签:
【中文标题】Qt QList C3892:无法分配给常量变量【英文标题】:Qt QList C3892: cannot assign to a variable that is const 【发布时间】:2013-04-11 07:37:47 【问题描述】:我有 QList 的 const 正确性问题。
我有一个方法 getValue
其签名我无法更改返回 const double 和这里
double vs = MinInput->getValue(0, 0);
vs 是常量。
我想使用此方法的结果构建 QList,但我收到错误 C3892。
由于我的列表是 QList,所以不能添加 const double (?)
代码是这样的
QList<double> minmax;
for (int i = 0; i < 2*(3+othercutoffs_var_len) ; i++ )
minmax.append( 0.0 );
QSP< const VarInterface<double> > MinInput = ctx.getInputVar<double>(ctx.input(Id::fromString(QL1s("Min")))[0] );
const double vs = MinInput->getValue(0, 0);
minmax.at(0) = vs;
最后一行代码给我带来了麻烦。 (使用其他此类 const double 填充列表时的其他错误)
getValue 的签名是这样的
const TYPE & VarData<TYPE>::getValue( uint r, uint c ) const
【问题讨论】:
【参考方案1】:我猜正确的代码是:
minmax[0] = vs;
更新:
QList::at
返回const
引用,不能修改。
【讨论】:
为什么不使用 at() ? 因为QList::at
返回const
引用,不能修改。签名:const T & QList::at ( int i ) const
QList 使用从 0 开始的索引,就像 C++ 数组一样。要访问特定索引位置的项目,可以使用 operator[]()。在非常量列表上,operator[]() 返回对项目的引用,并且可以在赋值的左侧使用:【参考方案2】:
QList::at(int i)
是一个 getter 函数。它返回一个const
引用,你不能给它分配任何东西。
使用QList::operator[](int i)
或QList::replace(int i, const & T value)
设置i
位置的值。
【讨论】:
以上是关于Qt QList C3892:无法分配给常量变量的主要内容,如果未能解决你的问题,请参考以下文章
在 NSLayoutConstraint 上更新“常量”失败,并显示“无法分配给 'constraint' 中的 'constant'”