Méthodes amies

On souhaite parfois qu’une méthode d’une classe puisse accéder aux parties privées d’une autre classe. Pour cela, il suffit de déclarer la méthode friend également, en utilisant son nom complet (nom de classe suivi de :: et du nom de la méthode). Par exemple :

class autre {     // ...     void combine(exemple);     };				class exemple {     // ...parties privées     public :     friend void autre::combine(exemple);     };				void autre::combine(exemple ex) {     // utilise les membres privés de ex } 

La fonction combine, qui fait une modification quelconque de l’instance de autre qui l’appelle, à l’aide des données contenues dans une instance de exemple, a libre accès aux parties privées des deux classes.

On aurait pu aussi écrire une fonction amie des deux classes :

class exemple {     // ...parties privées     public :     friend void combine(autre&, exemple);     };class autre {     // ...     friend void combine(autre&, exemple);     };void combine(autre& au, exemple ex){     // accède aux membres des deux arguments}

mais la syntaxe d’appel est alors différente : combine(au,ex) contre au.combine(ex).

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