"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi une classe modèle doit-elle déclarer une classe modèle amie avec un paramètre de modèle différent ?

Pourquoi une classe modèle doit-elle déclarer une classe modèle amie avec un paramètre de modèle différent ?

Publié le 2024-11-13
Parcourir:788

Why Does a Templated Class Need to Declare a Friend Templated Class with a Different Template Parameter?

Classe modèle avec classe basée sur un modèle 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 en tant que classe d'amis template BT ;. Cependant, cela est interdit car les paramètres des modèles imbriqués ne peuvent pas porter le même nom. Les modèles imbriqués doivent utiliser des noms de paramètres de modèle distincts.

Définition des relations amicales

Lorsque vous déclarez un modèle classe d'amis BT ;, vous établissez une relation amicale entre BT et BE, quel que soit le 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 restreindre la relation d'ami 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 friend class bar;

Dans votre cas spécifique, déclarer Friend Class Bar; au sein de la classe BE devrait suffire.

Dernier tutoriel Plus>

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