Я создал базовый класс Shape_2D, который наследуется всеми классами фигур
Shape_2D.h
private:
std::vector<Point> points_within_shape_;
std::vector<Point> points_on_perimeter_;
public:
std::vector<Point> get_Points_Within_Shape();
std::vector<Point> get_Points_On_Perimeter();
Для Shape_2D класса Shape_2D есть только 1 конструктор. cpp
Shape_2D::Shape_2D(const std::string &name, const bool &contain_Warp_Space)
: name_(name), contain_warp_space_(contain_Warp_Space) {}
std::vector<Point> Shape_2D::get_Points_Within_Shape()
{
return this->points_within_shape_;
}
std::vector<Point> Shape_2D::get_Points_On_Perimeter()
{
return this->points_on_perimeter_;
}
Учитывая приведенный выше код, я хочу получить все точки внутри фигуры (в данном случае прямоугольник) и вернуть ей вектор для всех точек.
функция для этого реализуется индивидуально для каждой фигуры. Этот пример - класс прямоугольника ниже.
Прямоугольник. cpp
Rectangle::Rectangle(const std::array<Point, 4> &vertices, const bool &warp_space)
: Shape_2D("Rectangle", warp_space), vertices_(vertices), area_(compute_Area())
{
get_Points_Within_Shape() = get_All_Point_In_Shape();
get_Points_On_Perimeter() = get_All_Point_On_Shape();
}
std::vector<Point> Rectangle::get_All_Point_In_Shape()
{
std::vector<Point> points_within_shape;
for (int x = vertices_[0].get_X() + 1; x < vertices_[2].get_X(); x++)
{
for (int y = vertices_[1].get_Y() + 1; y < vertices_[0].get_Y(); y++)
{
if (is_Point_In_Shape(x, y))
points_within_shape.push_back(Point(x, y));
}
}
return points_within_shape;
}
std::vector<Point> Rectangle::get_All_Point_On_Shape()
{
std::vector<Point> points_on_perimeter;
for (int x = vertices_[0].get_X(); x <= vertices_[2].get_X(); x++)
{
for (int y = vertices_[1].get_Y(); y <= vertices_[0].get_Y(); y++)
{
if (is_Point_On_Shape(x, y))
points_on_perimeter.push_back(Point(x, y));
}
}
return points_on_perimeter;
}
Однако, когда я запускаю их через отладчик, я обнаруживаю, что, несмотря на то, что функция работает правильно, вектор, объявленный в Shape_2D, не будет обновляться соответственно. Что я могу сделать, чтобы это исправить?