Maison > développement back-end > C++ > Pourquoi ne puis-je pas accéder à une fonction ami déclarée au sein d'une classe ?

Pourquoi ne puis-je pas accéder à une fonction ami déclarée au sein d'une classe ?

DDD
Libérer: 2024-11-07 07:13:02
original
196 Les gens l'ont consulté

Why can't I access a friend function declared within a class?

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal