Classe modèle avec classe basée sur un ami : déchiffrer les mécanismes
Dans ce scénario, vous définissez un modèle de classe d'arbre binaire (BT) et un modèle de classe (BE ) qui représente un élément de l'arbre. Vous rencontrez une exigence particulière pour déclarer le modèle d'ami comme BT au lieu de BT. Une enquête sur ce comportement conduit à une compréhension approfondie des modèles de classe et des relations entre amis.
Modèles imbriqués et observation
Au départ, vous essayez de déclarer le modèle d'ami comme template classe d'amis BT ;. Cependant, cela est interdit car les paramètres des modèles imbriqués ne peuvent pas avoir le même nom. Les modèles imbriqués doivent utiliser des noms de paramètres de modèle distincts.
Définir les relations entre amis
Lorsque vous déclarez un modèle classe d'ami BT ;, vous établissez une relation d'amitié entre BT et BE, quels que soient les arguments de modèle de BT. Cela signifie que toute instanciation de BT peut accéder aux membres privés de toute instanciation de BE.
Si vous souhaitez limiter la relation d'amitié aux seules instanciations de BT qui utilisent le même argument de modèle que BE, vous devez déclarer l'ami comme suit :
template<class T> friend class bar<T>;
Copier après la connexion
Dans votre cas spécifique, déclarer la classe ami bar; au sein de la classe BE devrait suffire.
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!