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 :

Problèmes avec operator<<


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Par défaut Problèmes avec operator<<
    bonjour,

    voilà j'ai un petit problème avec operator<<.
    Dans mon .h, il y ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    friend std::ostream& operator<< (std::ostream& ostr, const Operation& so);
    Et dans mon .cpp, il y a ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    std::ostream& operator<< (std::ostream& ostr, const Operation& so)
    {
    	ostr << so.getType() << " : " <<  so.getMontant() << " le " << so.getDate();
    	return ostr;
    }
    que je réutilise après comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    std::list<Operation>::iterator it = historique.begin();
    int m;
    for(m = it->getDate().getMois(); it->getDate().getMois() == m; it++)	
    	str += "" << *it << std::endl;
    Et à chaque fois que je fais make, il m'affiche ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    error: no match foroperator<<’ in ‘"" << * it’
    Operation.h:21: note: candidates are: std::ostream& operator<<(std::ostream&, const Operation&)
    Voici mon Makefile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CC = g++
    CCFLAGS = -ggdb3 -Wall -pedantic
    ObjFiles = main.o Personne.o Adresse.o Date.o Societe.o CompteEnBanque.o Operation.o
     
    all : main.out
     
    %.o : %.cpp
    	$(CC) $(CCFLAGS) -o $@ -c $<
     
    main.out : $(ObjFiles)
    	$(CC) -o $@ $^
     
    clean:
    	rm $(ObjFiles)
    Donc la question, c'est : Qu'est-ce qui ne va pas dans mon operator<< ?

    merci d'avance.

  2. #2
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Je comprend pas ce que tu veux faire avec cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    str += "" << *it << std::endl;

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Par défaut
    j'ajoute dans la std::string str le résultat de la fonction operator<< de l'Operation pointée par l'itérateur it de la liste d'Operations historique.
    Le compilateur se comporte comme si la surcharge de la fonction operator<< ne fonctionnait pas, alors que je l'ai pourtant écrite correctement...

  4. #4
    Membre expérimenté Avatar de Nogane
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 241
    Par défaut
    bonjour,
    Tu tente d'appeler un opérateur << qui prend en paramètre un char* et un Operation, alors que celui que tu a définie prend en paramètre un ostream et un Operation.

    Essai avec ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <sstream>
     
    std::list<Operation>::iterator it = historique.begin();
    int m;
    stringstream strStr;
    for(m = it->getDate().getMois(); it->getDate().getMois() == m; it++)	
    	strStr << " " << *it << std::endl;
    str = strStr.str();
    Et aussi pense à mètre un espace dans " ". (sinon je vois pas trop ce que ça peu vouloir dire.)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Par défaut
    ça marche niquel, merci beaucoup

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

Discussions similaires

  1. STL deque - Problème avec l'operator==
    Par insane97 dans le forum C++
    Réponses: 4
    Dernier message: 20/06/2013, 12h02
  2. Problème avec les operators overloaded
    Par Kimy_Ire dans le forum C++
    Réponses: 5
    Dernier message: 26/11/2011, 20h14
  3. [Sictus Prolog] Problèmes avec ASSERT et OPERATORS
    Par barejo dans le forum Prolog
    Réponses: 0
    Dernier message: 18/06/2009, 11h42
  4. Réponses: 17
    Dernier message: 03/06/2008, 13h19
  5. problème avec sort() et operator<
    Par [Hugo] dans le forum C++
    Réponses: 6
    Dernier message: 25/02/2008, 18h19

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