2013-04-11 111 views
0

我有QList的const正確性問題。Qt QList C3892:不能分配到一個常量的變量

我有一個方法getValue的簽名我不能改變返回const的雙重這裏

double vs = MinInput->getValue(0, 0); 

VS是常量。

我想用此方法的結果來構建QList,並且出現錯誤C3892。

由於我的列表是QList,使用不能添加常量雙(?)

代碼就是這樣

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; 

和這個代碼最後一行是讓我陷入麻煩。 (填充與其他這樣的常量列表時其他錯誤雙打)

爲的getValue

簽名就是這樣

const TYPE & VarData<TYPE>::getValue(uint r, uint c) const 

回答

3

我想正確的代碼是:

minmax[0] = vs; 

更新:

QList::at返回const參考,它不能被修改。

+0

爲什麼不用at()? – octoback 2013-04-11 07:44:43

+0

因爲'QList :: at'返回無法修改的'const'引用。簽名:'const T&QList :: at(int i)const' – Amartel 2013-04-11 07:46:00

+0

QList使用基於0的索引,就像C++數組一樣。要訪問特定索引位置的項目,可以使用operator []()。在非常量列表上,operator []()返回對該項目的引用,並且可以在賦值的左側使用: – 2013-04-11 07:48:37

2

QList::at(int i)是一個吸氣功能。它返回一個const引用,你不能分配任何東西給它。

使用QList::operator[](int i)QList::replace(int i, const & T value)來設置位置i處的值。