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

 C++ Discussion :

operator<< avec type générique


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Par défaut operator<< avec type générique
    Bonjour à tous,

    Voilà je dispose d'un classe Matrice avec notamment la déclaration suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    friend ostream & operator <<(ostream &os,const Matrice<T> & mat)
    J'ai donc ensuite voulu définir mon opérateur << de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     template<classe T>
    ostream & operator <<(ostream &os,const Matrice<T> & mat)
    Hélas cela ne fonctionne pas, lors de l'exécution le compilateur va me dire qu'il ne trouve pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ostream & operator <<(ostream &os,const Matrice<Entier> & mat)
    Je pense que le problème vient du fait que je suis à l'extérieur de la classe matrice pour définir l'opérateur et que le type générique est géré autement.

    La seule solution que j'ai trouvé est de définir plusieurs operator << en fonction de mes types génériques, c'est à dire un pour Entier, pour Fraction, etc...

    J'espère que avez compris mon problème, je vous remercie d'avance pour votre aide.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour,
    Cela fait partie de ces petits détails du C++ qui nous perdent. La solution :
    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
    27
    28
    29
    30
    31
    32
    #include <iostream>
    template<class T>
    struct A;
     
    template<class T>
    std::ostream & operator <<(std::ostream &os,A<T> const & a_);
     
    template<class T>
    struct A
    {
       friend std::ostream & operator << <T>(std::ostream &os,A const & a_);
     
    private:
       std::ostream & print(std::ostream &os_)const
       {
          return os_<<"A<T>";
       }
    };
     
    template<class T>
    std::ostream & operator <<(std::ostream &os,A<T> const & a_)
    {
     
       return a_.print(os);
    }
     
    int main()
    {
       A<int> ai;
       std::cout<<ai<<"\n";
       return 0;
    }
    L'explication : template et amitié.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Par défaut
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/08/2011, 07h32
  2. Problème de type avec les génériques
    Par othebault dans le forum Langage
    Réponses: 5
    Dernier message: 17/09/2009, 14h59
  3. retour du type générique avec réflexion
    Par maxeur dans le forum C#
    Réponses: 2
    Dernier message: 03/07/2009, 14h05
  4. type générique avec héritage multiple
    Par apqmwnqmap dans le forum Langage
    Réponses: 4
    Dernier message: 13/03/2008, 14h56
  5. [2.0] polymorphisme avec des types générique
    Par mister3957 dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 31/05/2007, 08h11

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