Citation:
Envoyé par agrosjea Voir le message
Ok merci, donc du coup pas vraiment d'autre méthode que de définir un membre name ?
Decouper ton objet en deux, un qui fournit les services utilises dans les constructeurs/destructeurs ainsi que les membres necessaires a ces services et qui sera detruit par le destructeur de la classe de base, l'autre qui fournit le reste.
C'est lourd et ca ne se justifie pas toujours.
Code :
struct Interface {
virtual void fnPourConstructeur() = 0;
virtual void fnPourDestructeur() = 0;
};
struct Base {
Base(Interface* ptr) : myPtr(ptr) { ptr->fnPourConstructeur(); }
~Base() { myPtr->fnPourDestructeur(); delete myPtr; }
};
struct Derivee: Base {
Derivee();
};
struct DeriveeHelper: Interface {
DeriveeHelper() {}
void fnPourConstructeur() {}
void fnPourDestructeur() {}
};
Derivee:

erivee() : Base(new DeriveeHelper) {}
DeriveeHelper peut avoir un pointeur sur Derivee, mais pas l'utiliser dans fnPourConstructeur() ni dans fnPourDestructeur().
Partager