2017-04-20 1 views
4

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

+0

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. –

Répondre

8

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.

+0

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

+0

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