Создать класс фигура и определить в нем методы получения площади и периметра. Создать дочерние классы: квадрат , треугольник , трапеция. Переопределить методы расчета площади периметра в начальных классах. Родительский класс должен иметь метод для вывода площади и периметра на экран.
#include <iostream> template <class T> class Shape { public: virtual T get_area() = 0; virtual T get_square() = 0; void print_info() { std::cout << "Area: " << get_area() << std::endl; std::cout << "Square: " << get_square() << std::endl; } }; template <class T> class Square : public Shape<T> { T _size; public: Square(T size) : _size(size) {}; T get_area() { return _size * 4; } T get_square() { return _size * _size; } }; int main(int argc, const char *argv[]) { Shape<float> *shapes[] = { new Square<float>(4.7), new Square<float>(10.1), }; for (int i = 0; i < sizeof(shapes); i++) { shapes[i]->print_info(); } return 0; } Код #include <iostream> template <class T> class Shape { public: virtual T get_area() = 0; virtual T get_square() = 0; void print_info() { std::cout << "Area: " << get_area() << std::endl; std::cout << "Square: " << get_square() << std::endl; } }; template <class T> class Square : public Shape<T> { T _size; public: Square(T size) : _size(size) {}; T get_area() { return _size * 4; } T get_square() { return _size * _size; } }; int main(int argc, const char *argv[]) { Shape<float> *shapes[] = { new Square<float>(4.7), new Square<float>(10.1), }; for (int i = 0; i < sizeof(shapes); i++) { shapes[i]->print_info(); } return 0; }