我在QT中有以下变量:
QVector<QVector <int> > buff_d1;
Run Code Online (Sandbox Code Playgroud)
我需要修改“内部”向量:
buff_d1.at(i).removeFirst();
buff_d1.at(i).push_back(d1.at(i).at(sample_number));
Run Code Online (Sandbox Code Playgroud)
这导致错误:
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));
Run Code Online (Sandbox Code Playgroud)
我了解“内部”向量是const,因此无法对其进行修改,但是它的解决方法是什么?
您的at()函数返回一个const引用:
const T & QVector::at(int i) const
Run Code Online (Sandbox Code Playgroud)
并且您正在尝试使用removeFirst()函数对其进行修改。您应该使用[]运算符对其进行修改,因为它提供了非常量返回的重载:
T & QVector::operator[](int i)
Run Code Online (Sandbox Code Playgroud)
第二个错误也是如此。