我有QList的const正确性问题。
我有一个方法getValue
,其签名我无法更改返回const double和此处
double vs = MinInput->getValue(0, 0);
vs是const。
我想用这个方法的结果构建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双精度填充列表时的其他错误)
getValue的签名就像那样
const TYPE & VarData<TYPE>::getValue( uint r, uint c ) const
答案 0 :(得分:3)
我猜正确的代码是:
minmax[0] = vs;
更新
QList::at
返回const
引用,无法修改。
答案 1 :(得分:2)
QList::at(int i)
是一个getter函数。它返回const
引用,您无法为其指定任何内容。
使用QList::operator[](int i)
或QList::replace(int i, const & T value)
设置位置i
的值。