我周围搜索和似乎为了执行此操作我需要更改我的基类,并想知道这是否是最好的方法。 例如, 我有一个基类:C++:深拷贝一个基类指针
class Base {}
然后长线派生类:
class Derived_1:: public Base {}
class Derived_2:: public Derived_1{}
...
...
class Derived_n:: public Derived_M{}
然后我有另一个类:
class DeepCopy
{
Base * basePtr;
public:
DeepCopy(DeepCopy & dc) {}
}
假设基地类和Derived_x类拷贝构造函数都被正确编码,那么为DeepCopy编写拷贝构造函数的最佳方法是什么?我们如何知道我们要复制的对象的basePtr中的类?
我能想到的唯一方法就是使用RTTI,但是使用一长串dynamic_casts似乎并不正确。此外,它需要DeepCopy了解Base类的继承层次结构。
我看到的另一种方法是here。但它需要Base和Derived类实现一个克隆方法。
那么有没有一个更容易,标准的做法呢?
如果您使用的是POD数据类型,我会说'memcpy',但因为你不是,你可以使用模板。 –