#include #include #include using namespace std; class Point { public: Point(int x, int y) : m_x(x), m_y(y) {} int getX() const { return m_x; } int getY() const { return m_y; } private: int m_x, m_y; }; class Shape { public: Shape(const string& name, const Point& p) : m_name(name), m_point(p) {} virtual ~Shape() {} virtual void draw() const = 0; virtual void print() const { cout << "Shape: " << m_name << " (" << m_point.getX() << "," << m_point.getY() << ")" << endl; } private: string m_name; Point m_point; }; class OneD : public Shape { public: OneD(const string& name, const Point& p1, const Point& p2) : Shape(name, p1), m_p2(p2) {} void draw() const override {} void print() const override { Shape::print(); cout << " Point2: (" << m_p2.getX() << "," << m_p2.getY() << ")" << endl; } private: Point m_p2; }; class TwoD : public Shape { public: TwoD(const string& name, const Point& p) : Shape(name, p) {} void draw() const override {} }; class ThreeD : public Shape { public: ThreeD(const string& name, const Point& p) : Shape(name, p) {} void draw() const override {} }; class Line : public OneD { public: Line(const string& name, const Point& p1, const Point& p2) : OneD(name, p1, p2) {} void draw() const override {} }; class Curve : public OneD { public: Curve(const string& name, const Point& p1, const Point& p2, const Point& p3) : OneD(name, p1, p2), m_p3(p3) {} void draw() const override {} void print() const override { OneD::print(); cout << " Point3: (" << m_p3.getX() << "," << m_p3.getY() << ")" << endl; } private: Point m_p3; }; class Circle : public TwoD { public: Circle(const string& name, const Point& p, double radius) : TwoD(name, p), m_radius(radius) {} void draw() const override {} void print() const override { TwoD::print(); cout << " Radius: " << m_radius << endl; } private: double m_radius; }; class Rectangle : public TwoD { public: Rectangle(const string& name, const Point& p1, const Point& p2) : TwoD(name, p1), m_p2(p2) {} void draw() const override {} void print() const override { TwoD::print(); cout << " Point2: (" << m_p2.getX() << "," << m_p2.getY() << ")" << endl; } private: Point m_p2; }; class Sphere : public ThreeD { public: Sphere(const string& name, const Point& p, double radius) : ThreeD(name, p), m_radius(radius) {} void draw() const override {} void print() const override { ThreeD::print(); cout << " Radius: " << m_radius << endl; } private Errors I am getting. Please fix..