He buscado y parece que para poder realizar esto necesito cambiar mi clase Base y quiero saber si este es el mejor enfoque. Por ejemplo, que tienen una clase base:C++: Copia profunda de un puntero de clase base
class Base {}
A continuación, una larga lista de clases derivadas:
class Derived_1:: public Base {}
class Derived_2:: public Derived_1{}
...
...
class Derived_n:: public Derived_M{}
Y luego tengo otra clase:
class DeepCopy
{
Base * basePtr;
public:
DeepCopy(DeepCopy & dc) {}
}
Suponiendo que la base Los constructores de clase y Derived_x class copy están codificados correctamente, ¿cuál es la mejor manera de escribir el constructor de copia para DeepCopy? ¿Cómo podemos saber sobre la clase que está en la basePtr del objeto que vamos a copiar?
La única forma en que puedo pensar es en usar RTTI, pero el uso de una larga lista de dynamic_casts parece no estar bien. Además, requiere que DeepCopy sepa sobre la jerarquía de herencia de la clase Base.
El otro método que vi es here. Pero requiere que las clases Base y Derivadas implementen un método de clonación.
¿Existe una manera más fácil y estándar de hacer esto?
Si se utiliza un tipo de datos POD, diría 'memcpy', pero ya que no es así, podría usar plantillas. –