disons que je suis la création d'une classe pour un arbre binaire, BT, et j'ai de la classe qui décrit un élément de l'arbre, ÊTRE, quelque chose comme
template<class T> class BE{
T *data;
BE *l, *r;
public:
...
template<class U> friend class BT;
};
template<class T> class BT {
BE<T> *root;
public:
...
private:
...
};
Cela semble fonctionner; cependant j'ai des questions au sujet de ce qui se passe dessous.
J'ai d'abord essayé de déclarer l'ami
template<class T> friend class BT;
toutefois, il apparaît nécessaire d'utiliser U (ou quelque chose d'autre que de T) ici, pourquoi est-ce? N'implique qu'un BT de classe est un ami à toute la classe?
IBM page sur des modèles et des amis a des exemples de différents types de relations amicales, de fonctions, mais pas les classes (et devinettes une syntaxe n'a pas convergé sur encore la solution). Je préfère comprendre comment obtenir les spécifications correctes pour le type de la relation d'amitié que je souhaite définir.