Explorer les modèles de classe avec des amis de classe modèle
Lors de la définition d'une classe d'arbre binaire (BT) et de sa classe d'éléments (BE), il est nécessaire d'établir une relation d'amitié pour que BT puisse accéder aux membres privés de BE. Cependant, il est crucial de comprendre les mécanismes sous-jacents pour définir correctement la relation.
À l'origine, vous avez tenté de déclarer la relation amicale comme modèle
Au lieu de cela, vous devez utiliser des noms de paramètres de modèle différents, tels que :
template<class T> class BE { template<class U> friend class BT; };
Cette déclaration indique que toute classe BT, quel que soit son modèle arguments, est un ami de toutes les classes BE avec des arguments de modèle correspondants.
Considérez les exemples suivants pour clarifier davantage les différents types d'amis relations :
template<typename T> struct foo { template<typename U> friend class bar; };
Dans ce cas, bar est un ami de foo quels que soient les arguments du modèle de bar. Toute spécialisation de bar serait amie de toute spécialisation de foo.
template<typename T> struct foo { friend class bar<T>; };
Ici, bar n'est un ami de foo que si son argument de modèle correspond à celui de foo. Donc, seulement bar
Dans votre scénario spécifique, la classe d'amis bar
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!