#ifndef SHAPEREP_H #define SHAPEREP_H #include #include #include #include // This class cannot have pure virtual methods because we need a prototype namespace Shapes { class ShapeRep { public: ShapeRep(const Registration&) { PrototypeList().push_back(Shape(*this)); } virtual void draw() const {} virtual ~ShapeRep(); virtual ShapeRep* clone() const { return new ShapeRep; } virtual Shape make(std::string request_code) const; virtual bool isMine (std::string request_code); protected: ShapeRep(){} ShapeRep(const ShapeRep&){} ShapeRep& operator=(const ShapeRep&) { return *this; } }; extern Shape God; } //namespace #endif