#include #include using namespace std; class Shape { public: virtual void draw() = 0; }; class Circle : public Shape { public: virtual void draw() override { cout << "Circle draw" << endl; } }; class Square : public Shape { public: virtual void draw() override { cout << "Square draw" << endl; } }; class Factory { public: unique_ptr generate(const string& s) { if (s == "circle") { return make_unique(); } else if (s == "square") { return make_unique(); } return nullptr; } }; int main() { Factory f; unique_ptr s = f.generate("circle"); s->draw(); s = f.generate("square"); s->draw(); }