首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结构上的QVector与QVector含量的关系

结构上的QVector与QVector含量的关系
EN

Stack Overflow用户
提问于 2013-03-23 21:38:03
回答 2查看 968关注 0票数 0

我有一个结构:

代码语言:javascript
复制
struct node
{
    QPoint position;
    QVector<node> neighbours;

    void add(QPoint);
    void addNeighbours(QVector<node>);

    ...
};

采用下列方法:

代码语言:javascript
复制
void node::add(QPoint p)
{
    position = p;
}

void node::addNeighbours(QVector<node> n)
{
    neighbours = n;
}

然而,当我尝试使用addNeighbours时,我会得到以下错误:

代码语言:javascript
复制
error: C2662: 'node::addNeighbours' : cannot convert 'this' pointer from 'const node' to 'node &'
Conversion loses qualifiers

从在线上看,我认为解决方案来自于:使用正确的指针,并可能由QVectors::Iterator()提供。虽然我不能想出一个解决方案,但是对于为什么会发生这种情况,任何正确方向的指针或解释都是非常感谢的。

Main:

代码语言:javascript
复制
int main(int argc, char *argv[])
{
    QVector<node> map;
    QVector<node> tmp;
    node n;

    //Populate map
    for(int i = 0; i < 3; i++)
        for(int j = 0; j < 3;  j++)
        {
            n.add(QPoint(i,j));
            map.append(n);
        }

    //Add required nodes to tmp
    tmp.append(map.at(1));
    tmp.append(map.at(3));

    //Set the neighbour nodes of map(0) using tmp vector
    map.at(0).addNeighbours(tmp);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-23 21:40:22

变化

代码语言:javascript
复制
map.at(0).addNeighbours(tmp); // at() : returns a const reference

代码语言:javascript
复制
map[0].addNeighbours(tmp); // [] : returns a non-const reference

另外,最好将addNeighbours改为:

代码语言:javascript
复制
 void node::addNeighbours(const QVector<node> &n)
票数 1
EN

Stack Overflow用户

发布于 2013-03-23 21:41:08

QVector::at()只提供只读访问,请参阅文档:http://qt-project.org/doc/qt-4.8/qvector.html#at

这意味着您只能调用声明为"const“的方法。

但是,addNeighbours()不能是const,因为它修改了对象。

因此,您需要做的是以不同的方式访问对象,这样就不会获得const引用:

代码语言:javascript
复制
map[0].addNeighbours(tmp);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15592371

复制
相关文章

相似问题

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