我想用c++复制对象。问题是我派生了具有多态性的类,如下面的伪代码所示:

class BaseCl { some virtual functions };
class DerivedClass : public BaseCl { ... };

...
BaseCl * b1 = new DerivedClass();
BaseCl * b2 = new "copy of b1"; (just pseudocode)

问题是最后一行:

我想复制“BaseCl”类的对象,但由于存在多态性,因此复制必须与“DerivedClass”的原始对象一样。

最好的方法是什么?

非常感谢,感谢您的帮助。

编辑:问题已解决:

插入:
virtual BaseCl *clone() = 0;

在基类中
DerivedCl *clone() {return new DerivedCl(*this);}

在派生类中。谢谢你们。

最佳答案

您需要在BaseC1中定义一个函数以进行克隆。就像是:

class BaseCl
{
    virtual BaseCl* clone() {return new BaseC1(*this);}
};
class DerivedClass : public BaseCl
{
    virtual BaseCl* clone() {return new DerivedClass(*this);}
};

08-08 02:17