Hier ist, was ich versuche zu tun (dieser Code nicht funktioniert):Wie kann eine abgeleitete C++ - Klasse sich selbst über einen Basiszeiger klonen?
class Base
{
virtual Base *clone() { return new Base(this); }
virtual void ID() { printf("BASE");
};
class Derived : publc Base
{
virtual Base *clone() { return new Derived(this); }
virtual void ID() { printf("DERIVED"); }
}
.
.
Derived d;
Base *bp = &d;
Base *bp2 = bp->clone();
bp2->ID();
Was ich wie ist ausgedruckt, um zu sehen „Abgeleitet“ ... was ich bekommen ist „BASE ". Ich bin ein langjähriger C-Programmierer und ziemlich erfahren mit C++ ... aber ich komme mit diesem hier nicht voran ... jede Hilfe wäre willkommen.
Zeige mehr Code, speziell alle Konstruktoren jeder Klasse in diesem Fall ist wichtig. (Einige können aus Ihrem Code abgeleitet werden, aber es hilft bei der Suche nach mehr richtigen Antworten von allen ...) – Macke
Hm. Der ursprüngliche Code hatte Base bp = & d. Jetzt wurde es geändert in Base * bp = & d; – Macke
Nicht relevant für die Frage, aber Sie wollen auch virtuelle Destruktoren für die Klassen. –