最近这一直困扰着我。说我有一个基类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/