Portée de visibilité des fonctions d'ami en ligne
Malgré la définition des fonctions d'ami en ligne au sein d'une classe, leur portée réelle s'étend au-delà des limites de la classe. La norme C stipule que le nom d'une fonction ami en ligne fait référence à une fonction déclarée dans la portée de l'espace de noms englobant la plus proche.
Cependant, cette fonction déclarée n'est pas accessible via une recherche non qualifiée ou qualifiée jusqu'à ce qu'une déclaration correspondante soit fournie dans le domaine de cet espace de noms portée. Par conséquent, les appels directs à la fonction ami depuis la classe elle-même, la portée englobante ou les fonctions membres entraîneront des erreurs.
Cette limitation provient du fait que la fonction ami est déclarée dans la classe sans remplacer ou redéfinir un nom de fonction existant. Par conséquent, le compilateur ne reconnaît pas la fonction dans la portée de la classe ou de l'espace de noms englobant jusqu'à ce qu'il rencontre une déclaration explicite dans cet espace de noms.
Pour accéder à la fonction ami en ligne, vous pouvez utiliser la recherche dépendante des arguments (ADL) . ADL permet au compilateur de rechercher la fonction en fonction des types d'arguments utilisés dans l'appel. Cette approche s'aligne sur le principe selon lequel la fonction est considérée comme « liée » au type passé en argument.
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