Ich suchte herum und scheint, um dies durchzuführen, muss ich meine Basisklasse ändern und möchte wissen, ob dies der beste Ansatz ist. Zum Beispiel Ich habe eine Basisklasse:C++: Tiefes Kopieren eines Base Class Pointer
class Base {}
Dann eine lange Reihe von abgeleiteten Klassen:
class Derived_1:: public Base {}
class Derived_2:: public Derived_1{}
...
...
class Derived_n:: public Derived_M{}
Und dann habe ich eine andere Klasse:
class DeepCopy
{
Base * basePtr;
public:
DeepCopy(DeepCopy & dc) {}
}
die Basis Unter der Annahme, Klassen- und Derived_x-Klassenkopierkonstruktoren sind korrekt codiert, was ist der beste Weg, den Kopierkonstruktor für DeepCopy zu schreiben. Wie können wir über die Klasse wissen, die sich im basePtr des Objekts befindet, das wir kopieren werden?
Nur so, wie ich denken kann, ist RTTI verwenden, aber eine lange Liste von dynamic_casts Verwendung scheint nicht richtig. Außerdem muss DeepCopy über die Vererbungshierarchie der Basisklasse Bescheid wissen. Die andere Methode, die ich sah, ist here. Aber es erfordert Base und abgeleitete Klassen, eine Klon-Methode zu implementieren.
Also gibt es eine viel einfachere, standardmäßige Möglichkeit, dies zu tun?
Wenn Sie einen POD Datentyp verwendet wurden, würde ich sagen, 'memcpy', aber da Sie sind nicht Sie, könnte Vorlagen verwenden. –