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 :

Erreur de compilation en surchargant l'opérateur d'affichage


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par défaut Erreur de compilation en surchargant l'opérateur d'affichage
    Bonjour à tous,
    Après avoir essayé de chercher d'où pouvait venir mon erreur de compilation je me suis décidé à poster sur ce forum en espérant que vous allez pouvoir me débloquer.

    L'erreur de compilation se produit lorsque l'on essaye de surcharger l'opérateur d'affichage <<
    avec le prototype : ostream& operator<<(ostream&, const Prisonnier&);

    L'erreur étant la suivante :
    "erreur: expected constructor, destructor, or type conversion before ‘&’ token"


    Voici ma classe :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    #ifndef PRISONNIER_H_INCLUDED
    #define PRISONNIER_H_INCLUDED
     
    #include <string>
    #include <iostream>
     
    class Prisonnier
    {
     
    private :
        int annee;
        bool coupPrecedentAdversaire;
     
    protected :
        std::string nom;
        int nbCoups;
        int score;
    public :
     
        virtual bool reponse() = 0;
        Prisonnier(const std::string);
        virtual ~Prisonnier();
        void itererScore(int nombre);
        void effacerAnnee();
        void ajouterAnnee(int years);
     
        //setter
        void initialiserNbCoups(int nombre);
        void initialiserCoupPrecedent(bool cp);
     
        // Accesseurs
        int recupererAnnee();
        std::string recupererNom();
        int recupererScore();
        bool recupererCoupPrecAdversaire();
        //affichage
        virtual void afficher(std::ostream &out)const=0;
     
        // test
        virtual void test(){}
    };
      ostream& operator<<(ostream&, const Prisonnier&);  // C'EST CETTE LIGNE QUI NE MARCHE PAS
     
     
    #endif // PRISONNIER_H_INCLUDED

  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
    Salut,
    Il te manque tout simplement l'espace de nom (comme tu l'as fait pour std::string) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     std::ostream& operator<<(std::ostream&, const Prisonnier&);
    Souvent l'erreur que tu mentionnes apparaît quand le compilo ne reconnait pas le nom comme un nom de type. C'est donc cette piste qu'il faut explorer.

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Salut,
    Il te manque tout simplement l'espace de nom (comme tu l'as fait pour std::string) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     std::ostream& operator<<(std::ostream&, const Prisonnier&);
    Souvent l'erreur que tu mentionnes apparaît quand le compilo ne reconnait pas le nom comme un nom de type. C'est donc cette piste qu'il faut explorer.
    Mince alors, je me suis prit la tête tellement de temps sur un truc aussi bête. En tout cas merci beaucoup de ton aide.

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

Discussions similaires

  1. Compiler la surcharge de l'opérateur new
    Par mutagling dans le forum Langage
    Réponses: 1
    Dernier message: 24/06/2010, 07h24
  2. Erreur lors de surcharge d'opérateur
    Par Dani3L dans le forum C++
    Réponses: 9
    Dernier message: 18/09/2008, 20h12
  3. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  4. Surcharge d'opérateur : erreur de linkage
    Par tHE_fLAmMinG_mOE dans le forum C++
    Réponses: 6
    Dernier message: 31/10/2006, 17h04
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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