Do the following with class Shape: a. Add prototypes for all required methods and operators for the class (the Point class is the one from problem one above). // 1) ******************************************************************* template class Point { public: void setX(T a) { X = a; } void setY(T b) { Y = b; } T getX() { return X; } T getY() { return Y; } private: T X; T Y; }; // 2) ******************************************************************* template class Shape { public: Shape     (); Shape     (const Shape &); virtual              ~Shape     (); Shape &              operator =  (const Shape &); const Point <int> &     GetOrigin  () const; bool              SetOrigin  (const Shape &); private: Point <T>           Origin; }; template <class T> Shape <T>::Shape () { cout << \"Shape Default Constructor\" << endl; } template <class T> Shape <T>::Shape (const Shape & S): Origin (S.Origin) { } template <class T> Shape <T>::~Shape () { cout << \"Shape Destructor\" << endl; } template <class T> Shape <T> & Shape <T>::operator = (const Shape <T> & S) { Origin = S.Origin; return *this; } Solution template <class T> class Point { public: void setX(T a) { X = a; } void setY(T b) { Y = b; } T getX() { return X; } T getY() { return Y; } private: T X; T Y; }; Please let me know in case of any issue .