weixin_46234544
weixin_46234544
采纳率100%
2020-01-29 13:34

c++ vector引用如何修改

已采纳

在Rectangle里是一个private的vector变量和一个方法返回vector出来

private:
    std::vector<Point2D> m_points_contained;

public:
    const std::vector<Point2D>& points_contained() const { return m_points_contained; }

我想在另一个文件里通过方法返回出来的vector对他进行修改,但是push_back以后原来的m_points_contained没有更改

std::vector<Point2D> allP = points_contained();
allP.push_back(p);

如果

std::vector<Point2D>&  allP = points_contained();

报错 Binding reference of type 'const vector<...>' to value of type 'vector<...>' changes address space
如果

points_contained().push_back(p);

报错 No matching member function for call to 'push_back'

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • qq_39575645 Kim_小星兴 1年前

    public :
    函数中 将所有的const 去掉即可;
    此时

    将会修改对象内部的值;
    
    点赞 评论 复制链接分享
  • wlj1234 wlj1234 1年前

    可以再增加一个函数
    std::vector& points_contained() { return m_points_contained; }

    点赞 评论 复制链接分享

为你推荐