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 :

surcharge des operateurs de flux


Sujet :

C++

  1. #1
    Membre chevronné Avatar de icer
    Inscrit en
    Janvier 2006
    Messages
    332
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 332
    Par défaut surcharge des operateurs de flux
    J'essaye de surcharger les operateurs de flux << et >> pour ma classe personne.

    Le code:
    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
    #include <stdio.h>
    #include <iostream>
     
    class personne
    {
    public:
           char nom[30];
           friend ostream& operator<<(ostream& os, const Personne& p);
    }
    ostream& operator<<(ostream& os, const personne& p)
    {
             os << p.nom;
             return os;
    } 
     
    personne p;
    strcopy(p.nom, "test");
    cout << p;
    Mais lors de la compilation j'ai le message suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ISO C++ forbids declaration of `ostream' with no type
    pour la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    friend ostream& operator<<(ostream& os, const Personne& p);
    Comment faire pour surcharger correctement ces opérateurs?

  2. #2
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Tu as oublié de préfixer les ostream par le namspace std::

  3. #3
    Membre chevronné Avatar de icer
    Inscrit en
    Janvier 2006
    Messages
    332
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 332
    Par défaut
    Merci Fiquet!
    J'ai modifier mon code:
    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
     
    #include <stdio.h>
    #include <iostream>
     
    class personne
    {
    public:
           char nom[30];
           friend std::ostream& operator<<(std::ostream& os, const personne& p);
    }
    std::ostream& operator << (std::ostream& os, const personne& p)
    {
             os << p.nom;
             return os;
    } 
     
    personne p;
    strcopy(p.nom, "test");
    cout << p;
    Mais maintenant j'ai le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    expected init-declarator before '&' token
    Pour la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::ostream& operator << (std::ostream& os, const personne& p)
    tu sais pourquoi?

  4. #4
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Tu as oublié le ; à la fin de ta class.
    Et c'est strcpy, pas strcopy

  5. #5
    Membre chevronné Avatar de icer
    Inscrit en
    Janvier 2006
    Messages
    332
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 332
    Par défaut
    Merci!
    ça fonctionne maintenant!

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Une personne est déterminée par son nom, donc je pense que ça devrait être dans le constructeur.
    Ensuite préfère std::string à char[30].

  7. #7
    Membre chevronné Avatar de icer
    Inscrit en
    Janvier 2006
    Messages
    332
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 332
    Par défaut
    Merci loufoque, je prend note.
    Mon problème est maintenant résolu.
    Merci à tous pour votre aide.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/06/2012, 17h09
  2. surcharge des operateurs "?"
    Par qsdwxc9 dans le forum C++
    Réponses: 1
    Dernier message: 09/03/2010, 12h39
  3. surcharge des operateur du conteneur set
    Par isoman dans le forum C++
    Réponses: 6
    Dernier message: 10/07/2008, 15h41
  4. [debutant] question sur la surcharge des operateurs
    Par hunter99 dans le forum Débuter
    Réponses: 17
    Dernier message: 04/01/2008, 18h26
  5. Surcharge des operateur de flux
    Par pit88 dans le forum C++
    Réponses: 1
    Dernier message: 25/04/2007, 10h31

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