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 :

Operator +,+=, *, ==


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut Operator +,+=, *, ==
    Bonjour ou bonsoir !


    Je souhaiterais additioner deux objets ensemble (deux fractions), j'ai donc surcharger mon opérateur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Zfraction operator+(Zfraction const& a, Zfraction const& b)
    {
        Zfraction copie(a);
        copie += b;
        return copie;
    }
    Cependant, l'operateur += n'est pas déclaré, et j'ai beau chercher sur le net, sur la faq etc, je ne trouve rien pour le déclarer, je n'ai aucune idée de comment faire.
    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Hello,

    Il se déclare de la même façon (et tous les opérateurs se déclarent pareil).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ZFraction& operator+=(ZFaction& left, const ZFraction& right);
    Tu auras probablement besoin de le définir dans ta class ZFraction, ou si tu le laisse en fonction libre il sera friend (car il devra accéder aux membres de ta classe pour faire le calcul)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class ZFraction {
       ...
       friend ZFraction& operator+=(ZFaction& left, const ZFraction& right); // fonction libre friend
       // OU
       ZFraction& operator+=(const ZFraction& right); // fonction membre (ici this est l'opérande de gauche)
    Pour l'opérateur +=, il faut bien faire attention de retourner une référence sur l'opérande de gauche après le calcul. (Pour pouvoir enchaîner les calculs)

    edit: typo

  3. #3
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    Mhh j'ai du mal a comprendre.

    Dans mon header(la ou il y a ma class), j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    friend Zfraction& operator+=(Zfraction& left, const Zfraction& right); // fonction libre friend
    Et dans mon Zfraction.cpp j'ai mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Zfraction& operator+=(Zfraction& left, const Zfraction& right);
    Cependant ca ne fonctionne pas. Probleme de reference etc

  4. #4
    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
    Bonjour,

    Le lien habituel..
    Citation Envoyé par Garwan50 Voir le message
    Cependant ca ne fonctionne pas.
    Mais encore ?
    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.

  5. #5
    Membre confirmé
    Profil pro
    Lycéen
    Inscrit en
    Novembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Novembre 2009
    Messages : 67
    Par défaut
    Salut merci de ta réponse, cependant je ne suis pas super a l'aise et je débute en C++, j'ai donc assez de mal a piger ^^.

    obj\Release\Zfraction.o:Zfraction.cpp|| undefined reference to `Zfraction::operator+=(Zfraction)'|
    J'ai regardé la correction du TP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ZFraction& ZFraction::operator+=(ZFraction const& autre)
    {
        m_numerateur = autre.m_denominateur * m_numerateur + m_denominateur * autre.m_numerateur;
        m_denominateur = m_denominateur * autre.m_denominateur;
     
        return *this;    
    }
    Mais y a pas mal de truc que je pige pas. Comme par exemple. Pourquoi on met un Zfraction& au début et juste apres un Zfraction.

    Et que signifie le autre. ?
    Les math c'est pas trop mon truc :pp

  6. #6
    Membre émérite

    Homme Profil pro
    Non disponible
    Inscrit en
    Décembre 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Non disponible

    Informations forums :
    Inscription : Décembre 2012
    Messages : 478
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    La FAQ est merveilleuse ^^ Ça devrais te donner la voie.
    Met ça en relation avec le lien de Bousk !

  7. #7
    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
    Citation Envoyé par Garwan50 Voir le message
    Mais y a pas mal de truc que je pige pas. Comme par exemple. Pourquoi on met un Zfraction& au début et juste apres un Zfraction.

    Et que signifie le autre. ?
    Les math c'est pas trop mon truc :pp
    Aucun rapport avec les maths, il s'agit uniquement de la grammaire de base du langage.
    Ne reconnais-tu pas la syntaxe d'écriture d'une fonction membre (implémantée hors du corps de déclaration de la classe) ??
    ZFraction& est le type de retour.. ZFraction:: signifie qu'il s'agit d'une fonction membre de la classe ZFraction.
    autre est juste le nom d'un paramètre..
    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.

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

Discussions similaires

  1. [Débutant][String] Opérations sur une chaîne
    Par gandalf_le_blanc dans le forum Général Java
    Réponses: 8
    Dernier message: 08/06/2004, 11h59
  2. afficher la signature des opérations dans XDE
    Par ChristopheH dans le forum Rational
    Réponses: 1
    Dernier message: 24/05/2004, 15h41
  3. [JSP] thread ? Message d'avancement des operations en cours
    Par buffyann dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 18/12/2003, 11h39
  4. operation sur des alias
    Par 74160 dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/11/2003, 18h19
  5. Réponses: 8
    Dernier message: 21/11/2003, 18h38

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