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 operateur <<


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 61
    Points : 37
    Points
    37
    Par défaut Surcharge operateur <<
    Bonsoir a tous.

    Je suis actuellement face a un doute. Je tente de surcharger l'operateur << entre un objet de mon cru et une string. Disons que cet objet est une instance de la classe Toy, je souhaiterais surcharger << entre cette instance de Toy et une string..

    Voici mon prototype a l'heure actuelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::string operator<< (const std::string&);
    et son implementation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::string Toy::operator<< (const std::string& str);
    Le corps de la fonction est tout simple. J'affecte a une donne membre private data le contenu de str via le mot cle this.

    Suis-je bon ?

    Merci d'avance

    William

  2. #2
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Points : 827
    Points
    827
    Par défaut
    Salut,
    Regarde
    Bye

  3. #3
    En attente de confirmation mail
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2010
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 501
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonjour,

    Citation Envoyé par will74 Voir le message
    Suis-je bon ?
    Syntaxiquement, ça a l'air bon.

    Mais il faut savoir que les chevrons sont traditionnellement utilisés pour des flux de données. D'ailleurs, les opérateur << et >> retournent en général une référence sur l'objet, ce qui permet d'écrire des chevrons en cascade dans la même ligne de code:
    myToy << "truc" << "bidule";

    Bref, pour éviter toute incompréhension, dans le cas décrit ici, il vaut mieux créer une méthode normale (un setter).

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par will74 Voir le message
    Bonsoir a tous.

    Je suis actuellement face a un doute. Je tente de surcharger l'operateur << entre un objet de mon cru et une string. Disons que cet objet est une instance de la classe Toy, je souhaiterais surcharger << entre cette instance de Toy et une string.
    Qu'est-ce que tu veux faire ? Veux-tu pouvoir écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string s;
    toy t;
    s << t;
    Si oui, tu as besoin d'un opérateur fonction libre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string& operator<<(string&, toy const &);
    Ton code actuel te permet d'écrire
    Et retourne une référence sur une string, ce qui est louche...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Qu'est-ce que tu veux faire ? Veux-tu pouvoir écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string s;
    toy t;
    s << t;
    Si oui, tu as besoin d'un opérateur fonction libre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string& operator<<(string&, toy const &);
    Ton code actuel te permet d'écrire
    De toute façon, même s'il souhaite écrire t << s, il est quand même préférable de passer par une fonction libre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    toy& operator<<(toy& t, const std::string& s)
    {
      t.do_something(s);
      return t;
    }
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. surcharge operateur delete et héritage
    Par Hervé dans le forum C++
    Réponses: 5
    Dernier message: 29/03/2006, 13h59
  2. Surcharge operateur =
    Par rulianf dans le forum C++
    Réponses: 9
    Dernier message: 23/02/2006, 00h32
  3. [debutante] surcharge operateur <<
    Par norkius dans le forum Débuter
    Réponses: 3
    Dernier message: 24/10/2005, 12h20
  4. [Surcharge]Operateur<< avec une classe maison
    Par KeNnEdY dans le forum C++
    Réponses: 6
    Dernier message: 14/09/2005, 15h51
  5. surcharge operateur && pointeurs
    Par le y@m's dans le forum C++
    Réponses: 6
    Dernier message: 10/05/2005, 15h57

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