IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

friend surcharge classe template


Sujet :

Langage C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut friend surcharge classe template
    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]

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Points : 473
    Points
    473
    Par défaut
    Le paramètre queue est passé par référence. Ce n'est en aucun cas un pointeur. Par conséquent queue->first_ n'a pas de sens.

    PS : je préfère friend, au getter/setter pour question de performance
    Je pense que tu ne sais pas de quoi tu parles.

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ce genre de code ne passera pas sur tous les compilos (notamment VC6, et peut-être des plus récents).

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    template <class T> 
    class Queue 
     { 
      friend ostream& operator<< <>(ostream &o, const Queue<T> &queue) ; 
      ...... 
      } ; 
    template <class T> 
       ostream& operator<<(ostream& o, const Queue<T>* &queue)
    Quelle est la bonne ?
    ou

  5. #5
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 282
    Points : 11 036
    Points
    11 036
    Par défaut
    les opérateurs de flux reçoivent ce que tu leur envoies et ... les pointeurs, ce n'est jamais une bonne idée. (et, il suffisait de tester)

Discussions similaires

  1. Friend Classe Template
    Par coberle dans le forum C++
    Réponses: 5
    Dernier message: 29/03/2013, 14h19
  2. Avis sur un problème de "friend class template"
    Par metagoto dans le forum C++
    Réponses: 8
    Dernier message: 24/03/2010, 18h16
  3. Surcharge d'opérateur dans une classe template
    Par Opérateur dans le forum Langage
    Réponses: 6
    Dernier message: 22/12/2008, 04h26
  4. souci classe template et surcharge operateur
    Par loicounet dans le forum Langage
    Réponses: 8
    Dernier message: 28/04/2008, 16h01
  5. Surcharge de << avec une class Template ?
    Par elraton dans le forum Langage
    Réponses: 10
    Dernier message: 04/01/2007, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo