La situation est la suivante.Empêcher la classe inheritor de surcharger la fonction virtuelle de la classe de base
class Interface
{
public:
virtual void foo() = 0;
}
class MyClass : Interface
{
public:
virtual void bar() = 0;
private:
void foo()
{
//Some private work and checks.
bar();
};
}
Je veux que mon utilisateur va créer une classe qui hérite de MyClass, et ils devront mettre en œuvre il bar()
. Mais comment puis-je enfoce qu'ils ne remplacent pas foo()
? parce que c'est important pour moi d'utiliser mon foo()
.
Est-ce que cela compile? Si c'est le cas, vous n'avez pas de problème, puisque votre foo est privé. Edit: ah, non, il ne compile pas ... –
@MrLister: Les méthodes privées peuvent encore être remplacées. –
Vrai, désolé. Pas de soucis alors. La réponse a déjà été donnée. –