Ho cercato in giro e sembra che per eseguire questo ho bisogno di cambiare la mia classe Base e voglio sapere se questo è l'approccio migliore. Per esempio, ho una classe base:C++: copia profonda di un puntatore della classe Base
class Base {}
Poi una lunga serie di classi derivate:
class Derived_1:: public Base {}
class Derived_2:: public Derived_1{}
...
...
class Derived_n:: public Derived_M{}
E poi ho un'altra classe:
class DeepCopy
{
Base * basePtr;
public:
DeepCopy(DeepCopy & dc) {}
}
Supponendo che la Base i costruttori di copia classe e Derived_x sono opportunamente codificati, qual è il modo migliore per scrivere il costruttore di copia per DeepCopy. Come possiamo sapere della classe che si trova nella basePtr dell'oggetto che stiamo per copiare?
L'unico modo in cui posso pensare è utilizzare RTTI, ma l'utilizzo di un lungo elenco di dynamic_cast non sembra corretto. Inoltre richiede a DeepCopy di conoscere la gerarchia di ereditarietà della classe Base.
L'altro metodo che ho visto è here. Ma richiede che le classi Base e Derivate implementino un metodo di clonazione.
Quindi c'è un modo molto più semplice e standard per farlo?
Se si sta utilizzando un tipo di dati POD, direi 'memcpy', ma dal momento che non siete, voi potrebbe usare i modelli. –