Angenommen, ich erstelle eine Klasse für einen Binärbaum BTund habe eine Klasse, die ein Element des Baums beschreibt BE, so etwas wie
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:
...
};
Dies scheint zu funktionieren; Ich habe jedoch Fragen dazu, was darunter vor sich geht.
Ich habe ursprünglich versucht, den Freund als zu deklarieren
template<class T> friend class BT;
Wie auch immer, hier scheint es notwendig zu sein U(oder etwas anderes als T), warum ist das so? Bedeutet dies, dass eine bestimmte BTPerson mit einer bestimmten BEKlasse befreundet ist ?
Die IBM Seite zu Vorlagen und Freunden enthält Beispiele für verschiedene Arten von Freundschaftsbeziehungen für Funktionen, jedoch nicht für Klassen (und das Erraten einer Syntax für die Lösung ist noch nicht konvergiert). Ich würde es vorziehen zu verstehen, wie man die Spezifikationen für die Art der Freundschaftsbeziehung, die ich definieren möchte, richtig macht.