矢量下标超出范围和多态性
Vector subscript out of range and polymorphism
在我的一个练习中,我必须编写头文件的cpp:三角形和多边形
在三角形.h文件中,我有:
class Triangle : public Polygon
{
public:
Triangle(Point, Point, Point);
~Triangle();
private:
};
所以在三角形的cpp文件中,我这样做:
Triangle::Triangle(Point a, Point b, Point c)
{
_points[0] = a;
_points[1] = b;
_points[2] = c;
}
Triangle::~Triangle(){}
此外,在多边形文件中,我拥有的头文件如下所示:
class Polygon
{
public:
Polygon();
~Polygon();
virtual double perimeter() const;
protected:
vector<Point> _points;
};
所以我完成了这个文件的cpp,如下所示:
Polygon::Polygon(){}
Polygon::~Polygon(){}
double Polygon::perimeter() const
{
return 0.0;
}
但当我想编译时,编译器会显示错误:向量下标超出范围,我不明白什么时候我把东西放在向量中超出范围。所以,如果你有办法解决这个问题,请帮帮我。谢谢!
因为您的向量没有用正确的大小初始化:
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);
}
相关文章:
- 多态性和功能结合
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- C++boost序列化多态性问题
- 如何查找哪个类对象位于数组的特定索引上(多态性)
- 如何在多线程中正确使用unique_ptr进行多态性?
- 具有智能指针的多态性
- 在 C++ 中在堆栈上创建实例时如何保持多态性?
- 继承/多态性 - 我是否被迫使用"protected"变量?
- C++ 多态性在代码::块 17.12 中不起作用
- C++ 泛型和多态性:这种模式可行吗?
- 为什么我们实际上需要运行时多态性?
- 如何在这个简单的最小示例中实现多态性?
- 如何使用静态多态性在 int 和指针类型之间进行转换?
- 无法初始化已知大小的矢量指针,该大小不会因多态性而更改
- 运行时多态性和dynamic_cast需要澄清
- 如何调用指针类型的方法(禁用多态性)?
- 从基类调用函数的多态性
- 如何避免指针超出范围(多态性)的C++分段错误
- 矢量下标超出范围和多态性