Accéder aux fonctions d'ami définies dans la classe
En C, les fonctions d'ami sont déclarées au sein des classes mais peuvent accéder aux membres privés et protégés de la classe. Considérez l'extrait de code suivant :
<code class="cpp">class A { friend void fun(A a); friend void fun2(); friend void fun3(); }; void fun3() { std::cout << "I'm here3" << std::endl; }</code>
L'accès à la fonction fun(A) fonctionne correctement car elle possède un paramètre de type A, permettant à la recherche dépendante de l'argument de la localiser. Cependant, il y a un problème pour accéder aux fonctions globales fun2() et fun3().
La déclaration de fun2 au sein de la classe en fait une fonction amie mais ne la déclare pas dans la portée globale. Par conséquent, lors de l'accès à fun2() en dehors de la classe :
Pour résoudre ce problème, l'approche correcte consiste à définir toutes les fonctions d'ami en dehors de la classe et à en faire des amis explicites de la classe :
<code class="cpp">class A { friend void fun(A a); friend void fun2(); friend void fun3(); }; void fun(A a) { std::cout << "I'm here" << std::endl; } void fun2() { std::cout << "I'm here2" << std::endl; } void fun3();</code>
Définir Les fonctions d'ami de cette façon permettent d'y accéder à la fois à l'intérieur et à l'extérieur de la classe.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!