Lorsque je modifie la signature d'une méthode virtuelle, il arrive assez fréquemment que les classes héritées deviennent abstraites. Cela pourrait conduire à des messages d'erreur (d'une grande confusion) à des emplacements apparemment totalement indépendants (à l'origine). Quelque part dans ces messages, j'ai lu "Foo est abstrait". Mais l'analyse de ces messages d'erreur est fastidieuse. Existe-t-il un moyen de faire en sorte qu'une classe soit et non abstraite?Assurez-vous qu'une classe n'est pas abstraite
Répondre
Vous pouvez utiliser le override
specifier pour spécifier qu'une méthode dans la classe dérivée remplace la méthode abstraite dans la classe de base. Lorsque vous modifiez la signature de la méthode dans la classe de base, la méthode spécifiée override
doit provoquer une erreur de compilateur car elle ne remplace plus la méthode de classe de base.
Il convient de mentionner que le mot-clé 'override' est ici depuis C++ 11 et que vous devrez donc l'activer dans le compilateur s'il n'est pas implicite. – Radek
Pas de problème avec ça. J'étais obsédé par les propriétés de la classe. Il ne m'est jamais venu à l'esprit que cela pourrait être une propriété de la méthode. – choeger
Les modifications de conception créent souvent de grandes ondulations. Vous devriez essayer de stabiliser l'interface tôt, pour éviter ce genre de problème. –