Templates, Nested class & friend functon
Bonjour à tous,
Je souhaite rendre un opérateur de flux (<<) ami d'une classe LinkedList et d'une sous classe LinkedList::LinkedNode.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
template<typename T>
class LinkedList
{
friend ostream& operator<<(ostream&, const LinkedList<T>&);
template<typename T>
class LinkedNode
{
friend class LinkedList<T>;
friend ostream& operator<<(ostream&, const LinkedList<T>&);
private:
T element;
LinkedNode<T>* next;
}
private:
LinkedNode<T>* head;
LinkedNode<T>* tail;
} |
voici maintenant l'opérateur ami:
Code:
1 2 3 4 5 6 7 8 9
|
template <typename T>
ostream& operator<<(ostream& out, const LinkedList<T>& list)
{
LinkedList<T>::LinkedNode<T>* temp = list.head;
// ce code ne fait rien, j'essaye juste d'accéder aux variables privées
temp.element;
temp.next;
} |
Le compilateur me dit que je n'ai pas le droit d'accéder à 'element' et à 'next'.
Indépendamment du fait qu'on aime ou pas utiliser les fonctions amies, ou les sous classes... j'aimerai comprendre pourquoi ce code ne marche pas. j'ai essayé sans les templates, avec des classes bidons, et ça marche bien...
Merci d 'avance pour vos réponses