Voici ce que je suis en train de faire (ce code ne fonctionne pas):Comment une classe C++ dérivée peut-elle se cloner via un pointeur de base?
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();
Ce que je comme est de voir « Dérivée » imprimé ... ce que je reçois est « BASE ". Je suis un programmeur C de longue date, et assez expérimenté avec le C++ ... mais je ne fais pas de progrès avec celui-ci ... toute aide serait appréciée.
Afficher plus de code, en particulier tous les constructeurs de chaque classe dans ce cas est important. (Certains peuvent être déduits de votre code, mais cela aide à obtenir des réponses plus correctes de la part de tout le monde ...) – Macke
Hm. Le code initial avait Base bp = & d. Maintenant, il a été changé en Base * bp = & d; – Macke
Pas pertinent à la question, mais vous aurez également besoin de destructeurs virtuels sur les classes. –