Bonjour !
Voila, j'aimerais savoir s'il est possible d'implémenter une fonction abstraite =0 en de façon qu'une classe dérivée ne puisse pas l'overrider.
Plus précisément, voici une Interface, et une classe A implémentant sa fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class Interface { public: virtual void Foo() = 0; };
Maintenant supposons qu'une classe Concrete redéfinisse Foo()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class Abstraite { public: void Foo() { // Do things... Bar(); } /** Cette fonction la est à implémenter par la classe dérivée **/ virtual void Bar() = 0; };
Je me demande s'il est possible de se débrouiller pour que, quand j'appelle Foo() sur un pointeur de mon Interface, ce soit Abstraite::Foo() qui soit appelée et pas Concrete::Foo().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class Concrete { public: void Foo() { // Do other things... } void Bar() {} };
Autrement dit, qu'il soit impossible pour une classe dérivée de Abstraite d'overrider Foo(), malgré qu'elle soit virtuelle.
Merci d'avance
Partager