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 opérateur "<<" en C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Enseignant
    Inscrit en
    Octobre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 135
    Par défaut Surcharge opérateur "<<" en C++
    Bonjour à tous,

    Voici 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
    20
    21
    22
    23
    24
    25
    26
     
    #include <iostream>
    #include <string.h>
    using namespace std;
     
    class Point  //Déclaration Classe
    {
         private: //Attribut
         int x,y;
         char couleur[10];
     
         public: //méthodes + Constructeur + Destructeur
            Point();
            ~Point();
            //surcharge d'opérateur + & = & <<
            Point operator+(const Point &);
            Point operator=(const Point &);
            Point operator<<(const Point &);
     
    };
     
    Point Point::operator<<(const Point &P)
    {
       cout << "Point = (" << x <<" , "<< y <<" ) "<< couleur << endl;
    return (x,y);
    }
    est ce que c'est juste ou faux??

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 488
    Par défaut
    42

    Manque l'implémentation des opérateurs + et =.

    Mise en page pas cohérente : le public devant les champs, séparation header/cpp => "using namespace" qui faut pas .

    L'opérateur << méthode de la classe, c'est une connerie, revoyez le chapitre sur les flux et en particulier la signature de ce type d'opérateur.

    ...

  3. #3
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    As-tu seulement essayé de le compiler, ce code?

  4. #4
    Membre confirmé
    Femme Profil pro
    Enseignant
    Inscrit en
    Octobre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 135
    Par défaut
    oui j'ai essayé de compilé il m'affiche erreur

    j'ai pas su comment le corriger

    En regardant le FAQ dans ce Forum:

    j'ai corrigé ma faute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    friend  ostream& operator<<(ostream&,const Point &);
          friend  istream& operator>>(istream&,const Point &);
    et implémentant les deux méthodes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ostream& operator<<(ostream& os, const Point& p)
    {
          os << p.x << ' ' << p.y << '\n'
               << p.couleur ;
          return os;
    }
     
    istream& operator>>(istream& ist, const Point& p)
    {
          ist >> p.x >> p.y;
          return ist;
    }
    En compilant il affiche Nom : errr.PNG
Affichages : 318
Taille : 3,2 Ko

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Tu essayes de modifier un paramètre passé par const référence.
    Tu as bien copié/collé la version <<, pas >> ..
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Franchement, je ne vois pas l'utilité de les mettre en friend, il suffit de déclarer des fonctions membres appropriées:
    Code C++ : 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
    //Point.hpp
    #include <iostream>
     
    class Point  //Déclaration Classe
    {
    private: //Attribut
    	int x,y;
    	char couleur[10];
     
    public: //méthodes + Constructeur + Destructeur
    	Point();
    	~Point();
    	//surcharge d'opérateur + & = & <<
    	Point operator+(const Point &) const;
    	Point operator=(const Point &);
     
    	void output(std::ostream&) const;
    	void input(std::istream&);
    };
     
    std::ostream& operator<<(std::ostream&,const Point &);
    std::istream& operator>>(std::istream&, Point &); //pas de const ici
    Code C++ : 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
    //Point.cpp
    #include "Point.hpp"
    using namespace std;
     
    void Point::output(ostream& os) const
    {
    	os << x << ' ' << y << '\n'
    		<< couleur ;
    	return os;
    }
     
    void Point::input(istream& ist)
    {
    	ist >> x >> y;
    }
     
    ostream& operator<<(ostream& os, const Point& p)
    {
    	p.output(os);
    	return os;
    }
     
    istream& operator>>(istream& ist, Point& p)
    {
    	p.input(os);
    	return ist;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. [Débutant]Surcharge opérateur +
    Par Geolem dans le forum Débuter
    Réponses: 13
    Dernier message: 05/12/2005, 10h16
  2. surcharge opérateur << et >>
    Par Azharis dans le forum Débuter
    Réponses: 11
    Dernier message: 02/11/2005, 21h22
  3. Surcharge opérateurs
    Par ghostdogpr dans le forum C++
    Réponses: 5
    Dernier message: 18/03/2005, 11h51

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