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 actif
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2013
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 47
    Par d�faut "operator +"
    Salut,
    je suis un d�butant C++ et je n'arrive pas � �crire la fonction operator+ qui permet l'addition de 2 abr et de cr�er un autre form� par les mots de 2 abr
    quelles sont les �tapes pour �crire cette fonction?
    Merci
    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
    class Noeud
    {
    private:
        string mot;
        Noeud *pGauche;
        Noeud *pDroite;
     
    public:
        Noeud(string word);
        Noeud  * chercher(string un_mot);
    };
     
    class ABR
    {
    private:
        Noeud * pRacine;
        string path;
     
    public :
        ABR();
        ABR(string chemin);//creer un abr avec le contenu du fichier
        ~ABR();
     
        void ajouter(string un_mot);
        friend ABR& operator+(const ABR &x, const ABR& y);
    };
     
    ABR &operator +(const ABR &x, const ABR &y)
    {  
        ...............  
    }

  2. #2
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2010
    Messages
    872
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 872
    Par d�faut
    - Je ne vois pas l'utilite d'utiliser un friend dans le cas present.
    - Tu n'auras qu'a faire un truc du genre pour retourner un nouvel ABR :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    ABR *operator +(const ABR &x, const ABR &y)
    {
      return new ABR(x.path + y.path);
    }
    Par contre si tu veux juste ajouter la chaine de caracteres contenue dans un autre ABR, la demarche est la suivante :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    ABR &operator +(const ABR &x)
    {
      path += x.path;
      return *this;
    }

  3. #3
    Membre actif
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2013
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 47
    Par d�faut RE
    lors de la compilation il m'affiche
    " `ABR* ABR::operator+(const ABR&, const ABR&)' must take either zero or one argument "

  4. #4
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    �tudiant
    Inscrit en
    F�vrier 2012
    Messages
    788
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 35
    Localisation : France

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

    Informations forums :
    Inscription : F�vrier 2012
    Messages : 788
    Par d�faut
    Citation Envoy� par imperio Voir le message
    - Je ne vois pas l'utilite d'utiliser un friend dans le cas present.
    - Tu n'auras qu'a faire un truc du genre pour retourner un nouvel ABR :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    ABR *operator +(const ABR &x, const ABR &y)
    {
      return new ABR(x.path + y.path);
    }
    L'allocation dynamique ne doit pas �tre utilis�e (ici).

    Citation Envoy� par imperio Voir le message
    Par contre si tu veux juste ajouter la chaine de caracteres contenue dans un autre ABR, la demarche est la suivante :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    ABR &operator +(const ABR &x)
    {
      path += x.path;
      return *this;
    }
    L'operateur + n'a pas le r�le de l'op�rateur +=

    Regarder cette entr�e de la FAQ pour avoir une signature de l'op�rateur + correcte :
    http://cpp.developpez.com/faq/cpp/?p...embre_ou_libre
    (L'op�rateur + doit retourner un nouvel ABR)

  5. #5
    Membre actif
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2013
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 47
    Par d�faut RE
    je n'ai pas compris
    comment faut-il faire exactement ?
    je ne peux pas acc�der a la fonction ajouter qui se trouver dans la classe ABR

  6. #6
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Sant�

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par d�faut
    Bonjour

    As tu lu la FAQ donn�e dans le lien ? As tu compris ce que Ehonn expliquait ?
    Quel rapport avec la fonction "ajouter" ?
    Quel est le code appelant ces fonctions ?

  7. #7
    r0d
    r0d est d�connect�
    Membre exp�riment�

    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    4 297
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 4 297
    Billets dans le blog
    2
    Par d�faut
    Une remarque qui n'apporte pas de solution, mais qui me parait importante: une fonctionnalit� qui fusionne 2 arbres n'a aucune raison de s'appeler "+".

    Une des trois r�gles de bases concernant les op�rateurs, c'est que "chaque fois que la signification d'un op�rateur n'est pas manifestement claire et incontest�e, il ne doit pas �tre surcharg�."

    Autrement dit, lorsqu'on voit le code arbre1 + arbre2, on ne sait pas clairement et sans ambigu�t� quel sera le r�sultat. Il ne faut donc un op�rateur pour cette op�ration, mais plut�t une fonction du type Fusion( const Arbre &, const Arbre &); ou quelque chose de cet ordre.

  8. #8
    Membre actif
    Homme Profil pro
    �tudiant
    Inscrit en
    Janvier 2013
    Messages
    47
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 47
    Par d�faut
    Citation Envoy� par gbdivers Voir le message
    Bonjour

    As tu lu la FAQ donn�e dans le lien ? As tu compris ce que Ehonn expliquait ?
    Quel rapport avec la fonction "ajouter" ?
    Quel est le code appelant ces fonctions ?
    j'ai lu la FAQ ce n'est pas mon cas
    la fonction ajouter permet d'ajouter un mot � l'ABR
    la question exacte c'est de red�finir l�op�rateur +

+ R�pondre � la discussion
Cette discussion est r�solue.

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