Accès aux fonctions d'ami définies dans une classe
Lorsque vous travaillez avec des fonctions d'ami, il est essentiel de comprendre comment elles sont définies et accessibles. Comme les fonctions amies ne sont pas membres d'une classe, leur accès en dehors de la classe peut nécessiter des considérations particulières.
Dans l'extrait de code fourni :
class A {
public:
friend void fun(A a){std::cout Les fonctions amies fun() et fun3() sont définies dans la classe mais ne sont pas déclarées dans la portée globale. Alors que fun() est accessible directement à l'aide de la recherche dépendante de l'argument (ADL) en raison de l'argument de type A, fun2() n'est pas accessible sans déclaration dans la portée globale.
Pour accéder correctement à fun2() , il doit être déclaré globalement en plus d'être défini comme une fonction amie au sein de la classe :
class A {
public:
friend void fun(A a){std::cout Dans cette version modifiée, fun2() est accessible en dehors de la classe comme une fonction ordinaire.
Cependant, il est recommandé de définir les fonctions d'ami de la manière habituelle, en dehors de la classe mais déclarées en tant qu'amis :
class A {
friend void fun(A a);
friend void fun2();
friend void fun3();
};
void fun(A a) { std::cout Cette approche garantit que toutes les fonctions d'ami sont définies et déclarées correctement, les rendant accessibles et utilisables comme prévu.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3