#pragma once #include "geometry.h" class Polygon_exception { }; class Polygon : public Geometry_figure { private: vector points; vector sides; void calc_sides(); public: Polygon(); template Polygon(vector coords); template <> Polygon(vector coords); double calc_area(); double calc_perimeter(); void name(); }; template inline Polygon::Polygon(vector coords) { int coor_size = coords.size(); if (coor_size % 2 != 0 && coor_size < 4) { cout << "Array size is not enough"; throw Polygon_exception(); } else { for (int i = 0; i < coor_size-1; i+=2) points.push_back(Point(coords[i], coords[i + 1])); calc_sides(); } } template<> inline Polygon::Polygon(vector coords) { int coor_size = coords.size(); if (coor_size % 2 != 0 && coor_size < 2) { cout << "Array size is not enough"; throw Polygon_exception(); } else { for (int i = 0; i < coor_size; i++) points.push_back(coords[i]); calc_sides(); } }