最近这一直困扰着我。说我有一个基类Base。如果我在Base之上有多个派生类,例如DerivedA和DerivedB,那么深拷贝很麻烦。

OtherClass(const OtherClass & _rhs)
{
    //I have a list of Base *, now I must assign a class id to each derived class to properly create a new one.
    //...
}

有什么办法可以解决这个问题?

最佳答案

您应该在基类中定义一个克隆方法:

virtual Base * clone() const = 0;

每个派生类都实现该克隆方法:
virtual DerivedA * clone() const {
    return new DerivedA(*this);
}

然后,您的OtherClass只需对列表中的每个Base*实例进行迭代并调用clone方法。

关于c++ - 对派生类执行深层复制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9136381/

10-16 04:30