[résolu] fonctions "pures virtuelles"
Bonjour.
J'ai 3 classes: A, B et C.
C hérite de B qui hérite de A.
est-il possible de déclarer une fonction, func1(), pure virtuelle dans A, de sorte qu'elle soit instanciée en C, mais pas en B. En gros, qu'elle reste pure virtuelle "à travers B"?
En effet, si j'instancie func1() dans B, quitte à surcharger cette fonction en C, le risque est que si qqun doit un jour écrire des classes C2, C3,... qui héritent aussi de B, alors si cette personne n'instancie pas func1(), le compilateur le laissera faire (le goupil!)
La solution que j'ai imaginée, mais qui ne me plait pas du tout:
func1 est pure virtuelle en A. Elle est instanciée en B: elle appelle func2 qui est pure virtuelle en B et instanciée en C. Une sorte de "cascade" de fonctions pure virtuelle. Mais je ne trouve pas cette solution tres "propre" (si je dois rajouter des classes intermediaires entre B et C, il faut tout re-modifier)
Re: fonctions "pures virtuelles"
Citation:
Envoyé par Biosox
Bonjour.
J'ai 3 classes: A, B et C.
C hérite de B qui hérite de A.
est-il possible de déclarer une fonction, func1(), pure virtuelle dans A, de sorte qu'elle soit instanciée en C, mais pas en B. En gros, qu'elle reste pure virtuelle "à travers B"?
Oui, il suffit de ne pas la mentionner dans B. B restera alors une classe abstraite (non instanciable). Je ne vois pas trop ton problème en fait.
Par ailleurs, question de vocabulaire, pour une fonction on utilise plutôt les termes définir ou éventuellement implémenter, qu'instancier.