首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QVector<QVector int> >修改“内部”向量

QVector<QVector int> >修改“内部”向量
EN

Stack Overflow用户
提问于 2014-10-29 18:10:06
回答 2查看 639关注 0票数 3

我在QT中有以下变量:

代码语言:javascript
复制
QVector<QVector <int> > buff_d1;

我需要修改“内部”向量:

代码语言:javascript
复制
buff_d1.at(i).removeFirst();
buff_d1.at(i).push_back(d1.at(i).at(sample_number));

这将导致以下错误:

代码语言:javascript
复制
    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));

我知道“内部”向量是const,所以我不能修改它,但是围绕它的工作是什么呢?

EN

回答 2

Stack Overflow用户

发布于 2014-10-29 18:15:12

您的at()函数返回一个const引用:

代码语言:javascript
复制
const T & QVector::at(int i) const

您正在尝试使用removeFirst()函数修改此函数。你应该使用[] operator来修改它,因为它提供了一个非常数返回重载:

代码语言:javascript
复制
T & QVector::operator[](int i)

这同样适用于第二个错误。

票数 5
EN

Stack Overflow用户

发布于 2014-10-29 18:14:50

at(int index)成员函数返回常量引用,请参阅文档here,因此您需要使用operator[int index]返回非常数引用才能对其进行修改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26627558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档