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'

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

将会修改对象内部的值;

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