Conflits de noms

Lorsqu’une classe hérite de plusieurs autres, il se peut que deux des classes de base aient des champs ou des méthodes ayant le même nom. S’il s’agit d’un champ d’une part, et d’une méthode d’autre part, ou de deux méthodes mais avec des listes d’arguments différents, il n’y a pas d’ambiguïté et le compilateur se débrouillera en fonction du contexte d’utilisation.

Par contre, lorsqu’il s’agit de deux champs, ou de deux méthodes ayant les mêmes arguments, le compilateur se trouve face à une ambiguïté insoluble. Pour la résoudre, il faut utiliser le nom d’une des classes de base et l’opérateur de résolution de portée. Par exemple, si les classes A et B ont toutes deux un champ x, il faudra écrire :

C c;c.A::x = 0;

Lorsqu’il s’agit de méthodes, il est préférable de recouvrir les méthodes de base en déclarant une méthode dans la nouvelle classe ayant le même nom et les mêmes arguments.

Précédent Précédent Sommaire Sommaire Suivant Suivant