Bonsoir,
dans une classe template la déclaration friend ne fonctionne pas !?!?
Alors que dans une classe normale ce code fonctionne.
Quelqu'un peut me dire pourquoi ?

Message d'erreur : Queue<string>::first_' is not accessible

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
template <class T>
  class Queue
    {
    friend ostream& operator<< <>(ostream &o, const Queue<T> &queue) ;
 
    private :
      Node<T>* first_ ;
      Node<T>* last_ ;
      int size_ ;
      ......
 
      } ;
 
    template <class T>
    ostream& operator<<(ostream& o, const Queue<T>* &queue)
    {
    Node<T>* n = queue->first_ ; // n'a pas accès à first_ alors que ça été 
 
déclaré friend !
    while (n)
      {
      o << *(n->data_) << "\t" ;
      n = n->next_ ;
      }
     return o ;
     }
PS : je préfère friend, au getter/setter pour question de performance

Voilà, merci


[Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]