这最近一直困扰着我。假设我有一个基类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.
//...
}
有没有办法解决这个问题?
答案 0 :(得分:9)
您应该在Base类中定义克隆方法:
virtual Base * clone() const = 0;
每个派生类都实现克隆方法:
virtual DerivedA * clone() const {
return new DerivedA(*this);
}
然后你的OtherClass必须迭代并在列表中Base*
的每个实例上调用clone方法。