J'ai une méthode virtual Close() dans une classe de base qui est appelée par son destructeur. La classe dérivée surcharge cette méthode Close() en faisant un traitement spécifique puis appelle la méthode Close() parente. Il me semble que c'est une manière assez classique de coder.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 struct S0 { ... virtual void Close(); virtual ~S0() { Close(); } }; struct S0D: S0 { ... virtual void Close() { ...; S0::Close(); } };
La problème survient quand on "oublie" de surcharger le destructeur de la classe dérivée. En fait je trouve assez pompant de devoir répéter le même code dans chaque destructor des classes dérivées, à savoirQuelles sont vos habitudes de conception dans ce genre de cas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part virtual ~S0_derived() { Close(); }
Merci.
Partager