我在QT中有以下变量:
QVector<QVector <int> > buff_d1;
我需要修改&#34;内部&#34;矢量:
buff_d1.at(i).removeFirst();
buff_d1.at(i).push_back(d1.at(i).at(sample_number));
导致错误:
passing 'const QVector<int>' as 'this' argument of 'void QVector<T>::removeFirst() [with T = int]' discards qualifiers [-fpermissive] buff_d2.at(i).removeFirst();
passing 'const QVector<int>' as 'this' argument of 'void QVector<T>::push_back(const T&) [with T = int]' discards qualifiers [-fpermissive] buff_d1.at(i).push_back(d1.at(i).at(sample_number));
我理解&#34;内部&#34; vector是const所以我无法修改它,但它的工作是什么?
答案 0 :(得分:4)
您的at()函数返回const
引用:
const T & QVector::at(int i) const
您正尝试使用removeFirst()功能对其进行修改。您应该使用[] operator来修改它,因为它提供了非常量的返回重载:
T & QVector::operator[](int i)
同样适用于第二个错误。
答案 1 :(得分:1)
at(int index)
成员函数返回一个const引用,请参阅文档here,因此您需要使用operator[int index]
返回非const引用以便能够修改它。