C++ Calling a copy constructor on an unknown derived class through an abstract base class

感情迁移 提交于 2019-11-29 06:12:50

You need to implement cloning.

   class base
   {
   public:
       virtual base* clone() const = 0;
   }

   class derived : public base
   {
   public:
       derived(){}; // default ctor
       derived(const derived&){}; // copy ctor

       virtual derived* clone() const { return new derived(*this); };
   };

Etceteras

To do this you have to provide a clone-method for your objects, that returns a pointer of the appropriate type. If all your classes have copy-constructors, that is as simple as that:

node* clone() const {
    return new node(*this);
}

Where node is the class you are writing the clone-method for. You would of course have to declare that method in your base-class:

virtual gpnode* clone() const = 0;
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!