在我的一个练习中,我必须编写头文件的cpp:triangle和polygon
在triangle.h文件中我有:
Triangle::Triangle(Point a, Point b, Point c)
{
_points[0] = a;
_points[1] = b;
_points[2] = c;
}
Triangle::~Triangle(){}
所以在三角形的cpp文件中我这样做:
class Polygon
{
public:
Polygon();
~Polygon();
virtual double perimeter() const;
protected:
vector<Point> _points;
此外,在多边形文件中,我拥有的头文件如下所示:
Polygon::Polygon(){}
Polygon::~Polygon(){}
double Polygon::perimeter() const
{
return 0.0;
}
};
所以我完成了这个文件的cpp:
public void addToRealm(Home item, RealmChangeListener<E> listener) {
realm.executeTransaction((Realm realm1) ->
realm1.copyToRealm(item).addChangeListener<Home>(listener));
}
但是当我想编译编译器时显示错误:向量下标超出范围,我不明白我什么时候把东西放在范围之外的向量中。所以,如果你有一个想法如何解决问题,请帮助我。 谢谢你!
答案 0 :(得分:2)
因为您的矢量未使用适当的大小进行初始化:
Triangle::Triangle(Point a, Point b, Point c)
{
_points.resize(3); // reserve space for 3 points.
_points[0] = a;
_points[1] = b;
_points[2] = c;
}
或者使用push_back:
Triangle::Triangle(Point a, Point b, Point c)
{
_points.push_back(a);
_points.push_back(b);
_points.push_back(c);
}