Maison > Article > développement back-end > Pourquoi ne puis-je pas accéder à une fonction ami déclarée au sein d'une classe ?
Accès aux fonctions d'ami définies dans une classe
Dans l'extrait de code fourni, il y a trois fonctions d'ami déclarées comme amis de la classe A : amusant, amusant2 et amusant3. Bien que fun et fun3 soient accessibles sans aucun problème, l'accès à fun2 génère des erreurs de compilation. En effet, fun2 est déclaré dans la déclaration de classe, ce qui en fait une entité locale connue uniquement dans cette portée.
Pour remédier à cette limitation, il existe deux approches principales :
Définir Déclarations de fonctions globales :
Dans cette approche, vous pouvez définir la fonction ami fun2 en dehors de la déclaration de classe, comme suit :
<code class="cpp">// In the global scope void fun2();</code>
Cela rend la déclaration de fonction visible à l'ensemble programme et vous permet d'y accéder en utilisant l'espace de noms global.
Utilisation des déclarations de classe ami :
Vous pouvez également utiliser des déclarations de classe ami pour accorder l'accès aux fonctions membres de une classe particulière. Par exemple, vous pouvez créer une classe Friend qui est déclarée comme amie de la classe A :
<code class="cpp">class Friend { friend void fun2(); };</code>
Cela permet à toute fonction définie au sein de la classe Friend d'accéder aux membres privés et protégés de la classe A. Cependant, cette approche n'est pas aussi flexible que la définition globale de la fonction, car elle limite l'accès à ces fonctions dans le cadre de la classe Friend.
En suivant ces approches, vous pouvez accéder efficacement aux fonctions Friend définies dans une classe. , en s'assurant qu'ils disposent des privilèges nécessaires pour interagir avec les membres 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!