Limiter la redéfinition d'une fonction virtuelle ?
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:
1 2 3 4 5
| class Interface
{
public:
virtual void Foo() = 0;
}; |
Code:
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;
}; |
Maintenant supposons qu'une classe Concrete redéfinisse Foo()
Code:
1 2 3 4 5 6 7 8 9 10 11
|
class Concrete
{
public:
void Foo()
{
// Do other things...
}
void Bar() {}
}; |
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().
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 :)