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


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Points : 42
    Points
    42
    Par défaut surcharge d' operateur
    bonjour j"aimerais faire le somme de deux vecteurs en utilisant une surcherge d'operateur en C++ voici ma methode
    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
     
    vecteur vecteur::operator+(const vecteur& vecter)
      { int i;
          int *tabl;
          tabl=new int[Nblignes];
     
        //les valeurs de vecteur1 sont chargés dans tabl
     
          for(i=0;i<Nblignes;i++)
          {
            tabl[i]=tab[i];
          }
     
        // somme des elements de tabl et vecteur2
          for(i=0;i<Nblignes;i++)
          {
            tabl[i]=vecter.tab[i];
          }
     
        //Création d'un type de retour
           vecteur resultat (*tabl);
     //retour du resulatt
           return resultat; 
      }
    je sais pas si elle est correcte

    l'instruction qui appele cette methode est

    resultat=vecteur1+vecteur2;

    quand je compile j'ai cette unique erreur

    invalid operands of types `vecteur*' and `vecteur*' to binary `operator+'

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Pourrait-on avoir la définition de ta classe vecteur, et l'implémentation de tes différents constructeurs

    Ceci dit, il y a une ligne qui m'intrigue au plus haut point... c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vecteur resultat (*tabl);
    En effet, tu prend la peine de créer un tableau et de le remplir, tout cela pour... ne transmettre que le premier élément du tableau au constructeur de ta classe...

    Cherchez l'erreur
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Points : 42
    Points
    42
    Par défaut fichier.h
    voici mon fichier.h

    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
     
    #ifndef _VECTEUR_H_
    #define _VECTEUR_H_
    #define min  1
    #define max  100
    class vecteur
     
    {
       int Nblignes ;
       int *tab;
      //tab=new int[Nblignes];
     
       public:
        vecteur(int n);
        void lire();
        void afficher();
        vecteur operator+(const vecteur &vecter);
     
     
        ~vecteur();
    };
    #endif
    Mon fichier .cpp

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    #include <iostream>
    #include "vecteur.h"
    using namespace std;
     
     
    vecteur:: vecteur (int n)
     { int i;
      cout<<"\n\n Construction du vecteur \n";
     
        do
        { if ((n < min)||(n > max))
           { 
             cout <<" \n\n le nombre d'elements du vecteur doit etre compri entre "<<min <<" et " <<max;
             cout << "\n \nVeuillez recommencer \n";
             cout << "\n \nNombre d elements du vecteur ";
             cin>>n;
           }
        }while((n<min)||(n>max));
     
         cout <<" \n\nle nombre d'elements du vecteur est : "<<n<<"\n";
     
        tab=new int[n];
     
          for(i=0;i<n;i++)
          tab[i]=0;
     
         for(i=0;i<n;i++)
         cout <<" \n\nl element " <<i+1 <<" du vecteur est : " <<tab[i]<<"\n";
       }
     
       void  vecteur::lire()
       { int i;
             cout << "\n \n Entrer le nombre de lignes  du vecteur\n\n ";
             cin>>Nblignes;
         tab=new int[Nblignes];
             for(i=0;i<Nblignes;i++)
              {
                cout<< "\n \n Entrer l element " << i+1<< "  du vecteur\n\n ";
                cin>>tab[i];
             }
       }
     
       void vecteur::afficher()       
       { 
         int i;
            for(i=0;i<Nblignes;i++)
            cout <<" \n\nl element " <<i+1 <<" du vecteur est : " <<tab[i]<<"\n";
       }
     
    vecteur vecteur::operator+(const vecteur& vecter)
      { int i;
          int *tabl;
          tabl=new int[Nblignes];
     
        //les valeurs de vecteur1 sont chargés dans tabl
     
          for(i=0;i<Nblignes;i++)
          {
            tabl[i]=tab[i];
          }
     
        // somme des elements de tabl et vecteur2
          for(i=0;i<Nblignes;i++)
          {
            tabl[i]=vecter.tab[i];
          }
     
        //Création d'un type de retour
    vecteur resultat (*tabl);
     //retour du resulatt
    return resultat; 
      }
     
    vecteur:: ~vecteur ()
     {
        cout<<"\n\n Destruction du vecteur \n";       
      }
    Mon prog principal

    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
     
    #include <iostream>
    #include "vecteur.h"
    using namespace std;
     
    main()
     
     {
       vecteur *vecteur1=new vecteur(3);
     
       vecteur1->lire();
       vecteur1->afficher();
     
       vecteur *vecteur2=new vecteur(3);
     
       vecteur2->lire();
       vecteur2->afficher();
       vecteur *resultat=new vecteur(3);
     
       resultat=vecteur1+vecteur2;
       delete vecteur1;
     }

  4. #4
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    oui, ben, c'est encore pis que ce que j'aurais pu penser...

    Reprends, si tu veux bien, ta logique pour réfléchir trente secondes...

    Dans ton opérateur, tu:
    crée un tableau dynamique
    1. le rempli avec les éléments du tableau courent
    2. additionne les valeurs du nouveau tableau une à une avec celles du tableau de l'élément passé en paramètre, jusqu'ici, tout va très bien... mais après
    3. tu passe le premier élément de ce tableau au constructeur de ta classe vecteur qui... le considère comme... le nombre d'élément à allouer au tableau...
    Heuu... ca te semble logique

    N'a tu pas un tout petit peu l'impression qu'il y a comme qui dirait un problème
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Points : 42
    Points
    42
    Par défaut tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    3. tu passe le premier élément de ce tableau au constructeur de ta classe vecteur qui... le considère comme... le nombre d'élément à allouer au tableau...
    je vois pas laquelle de mes instructions le fait

    Apres l'addition je crée un type de retour (resultat) et je j'utilise pour retourner le tableau à partir du pointeur vers le premier element

  6. #6
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    euh...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int i;
          int *tabl;
          tabl=new int[Nblignes];
          
        //les valeurs de vecteur1 sont chargés dans tabl
        
          for(i=0;i<Nblignes;i++)
          {
            tabl[i]=tab[i];
          }
    N'a aucun interêt, sauf si tu veux modifier tab... mais dans un operator + les deux membres doivent être constant.
    De plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(i=0;i<Nblignes;i++)
          {
            tabl[i]=vecter.tab[i];
          }
    ça veut dire que tabl[] = vecter.tab[].... alors pourquoi l'avoir remplis avant avec le membre de droite? tu l'efface avec le membre de gauche...
    Et selon ton code tu devrais retourné vecteur v(NbLignes + vecter.GetNbLignes()).. car effectivement tu ne revois jamais de pointeur... le type de ta fonction est vecteur... tu doit retourné une copie.
    Homer J. Simpson


  7. #7
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par patricx Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    3. tu passe le premier élément de ce tableau au constructeur de ta classe vecteur qui... le considère comme... le nombre d'élément à allouer au tableau...
    je vois pas laquelle de mes instructions le fait

    Apres l'addition je crée un type de retour (resultat) et je j'utilise pour retourner le tableau à partir du pointeur vers le premier element
    Oui, mais réfléchis un peu à ce que fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tableau resultat(*tabl);
    *tabl indique que tu transmet au constructeur... ce qui est pointé par le pointeur nommé tabl...

    En l'occurence, il s'agit... du premier élément du tableau (cela revient strictement au même que si tu avais utilisé tabl[0])...

    Ce premier élément de tabl, tu le transmet au constructeur de ta classe Vecteur, dans lequel on lit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    vecteur:: vecteur (int n)
    {
        if ((n < min)||(n > max))
            cout <<" \n\n le nombre d'elements du vecteur doit etre compri entre "<<min <<" et " <<max;
    qui nous ramènent aux directives préprocesseurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #define min  1
    #define max  100
    ... C'est quand même pas moi qui l'ai inventé, ce code là

    Tu vois donc bien que ta ligne Vecteur resultat (*tabl) transmet le premier élément du tableau comme... nombre d'élément au constructeur de ta classe vecteur...

    CQFD...
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Points : 42
    Points
    42
    Par défaut typre de retour
    voici l'ordre dans lequel je m'inscrit
    //Création d'un type de retour
    vecteur resultat (*tabl);

    //retour du resulat
    return resultat;

    Depuis j cherche mais j pariens à rien

    quand je compile dans mon main j'ai cette ligne
    resultat=vecteur1+vecteur2;
    qui me pose cette erreur
    invalid operands of types `vecteur*' and `vecteur*' to binary `operator+'

  9. #9
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    resultat=vecteur1+vecteur2;
    Ce que tu fais c'est
    resultat = adresse du pointeur du vecteur1 + adresse du pointeur du vecteur2
    normal qui ne compile pas!
    Essaye avec:
    resultat= (*vecteur1) + (*vecteur2);
    Homer J. Simpson


  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Points : 42
    Points
    42
    Par défaut
    resultat= (*vecteur1) + (*vecteur2);

    me donne un autre message qui est

    cannot convert `vecteur' to `vecteur*' in assignment

  11. #11
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    C'est vraiment à se demander si tu comprend le code que tu écris ou si tu le fais exprès...

    Je reprend donc ton code "ligne par ligne" pour t'indiquer les différents problèmes et ce que font ces liges:

    1-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int *tabl;
    tabl=new int[Nblignes];
    créent dynamiquement un tableau de NbLignes entiers nommé tabl

    2-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(i=0;i<Nblignes;i++)
    {
        tabl[i]=tab[i];
    }
    copient les valeurs des éléments de tab dans tabl, jusque là, tout va bien... Mais les choses se corsent après:

    3-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(i=0;i<Nblignes;i++)
    {
        tabl[i]=vecter.tab[i];
    }
    copient le contenu de vecter.tab dans tabl...

    C'est à dire que cela remplace les valeurs des éléments de tabl que tu viens justement de donner... par les éléments de vecter.tab...

    Ce n'est pas ce que tu veux faire: tu voudrais surement additionner les deux valeurs...


    4-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vecteur resultat (*tabl);
    Cette ligne crée un vecteur en appelant vecteur::vecteur(int), en lui passant... la valeur du premier élément de tabl (ce qui revient au même que de lui passer tabl[0])...

    A partir d'ici, on entre donc dans la fonction vecteur::vecteur(int)... qu' est le constructeur

    Regardons maintenant ce que fait vecteur::vecteur(int):

    5- déclare une variable de type entier nommée i, soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout<<"\n\n Construction du vecteur \n";
    provoque un affichage... pas vraiment utile, mais bon...

    6-Entre dans une boucle pour laquelle la décision d'y retourner sera évaluée en fin de boucle (en 10)

    7-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ((n < min)||(n > max))
    {
    Si n, qui correspond, dans le cas présent, à la valeur du premier élément de tabl, est plus petit que min et plus petit que max (définis respectivement à 1 et 100)

    8-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout <<" \n\n le nombre d'elements du vecteur doit etre compri entre "<<min <<" et " <<max;
    nous affiche que le nombre d'éléments du vecteur doit être compris entre 1 et 100...

    Tiens, je croyais que c'était la valeur du premier élément du tableau créé dans l'opérateur +

    Et tu nous le confirme encore bien, en affichant

    9-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cout << "\n \nVeuillez recommencer \n";
    cout << "\n \nNombre d elements du vecteur ";
    et en attendant une introduction de la part de l'utilisateur
    Et tu fais cela...
    10-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    }
        }while((n<min)||(n>max));
    jusqu'à ce que n soit effectivement compris entre min et max (respectivement entre 1 et 100)...
    retourne en (6) si ce n'est pas le cas

    11-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cout <<" \n\nle nombre d'elements du vecteur est : "<<n<<"\n";
    Une fois que tu es content, tu nous confirme encore bien que c'est le nombre d'éléments du vecteur...
    12-Tu alloue dynamiquement la mémoire pour un nouveau tableau composé de n éléments


    13-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(i=0;i<n;i++)
        tab[i]=0;
    Tu initialise les différents éléments du tableau à 0

    14-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(i=0;i<n;i++)
         cout <<" \n\nl element " <<i+1 <<" du vecteur est : " <<tab[i]<<"\n"
    Et tu affiche la valeur de ces éléments... que tu viens d'initialiser à...0...

    15-On quite le constructeur:

    Nblignes vaut strictement n'importe quoi, mais a peu de chances de valoir n

    On perd la valeur de n, mais comme on ne sais plus trop s'il s'agissait du premier élément de tabl (comme le laisse supposer l'appel du constructeur) ou le nombre d'élément du tableau (comme le laisse supposer le code du constructeur), finalement, quelle importance

    Nous revenons ici dans la fonction operator +
    16-Tu renvoies le vecteur nouvellement créé, qui contient surement quelque chose, mais qui ne contient surement ni les valeur de l'un des vecteur d'origine ni, et encore moins, des éléments représentant la somme des éléments respectifs de ces deux vecteurs...

    Comme on quitte la fonction, on perd "toute trace de tabl, et nous avons, en plus, une jolie fuite mémoire...

    Alors, si, en plus, on met (1) en relation avec (15), on se rend compte que Nbligne vaut... strictement n'importe quoi, mais ne représente surement pas le nombre d'éléments qu'il y a dans le tableau...

    Bref, nous partons en couille intégrale dans toute la logique...
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Points : 42
    Points
    42
    Par défaut correction
    je comprend mieux

    pour y palier

    je fais ceci

    3- devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(i=0;i<Nblignes;i++)
    {
        tabl[i]+=vecter.tab[i];
    }
    à partir de 4- je vois pas trop comment palier à
    je voudrais
    Créer un type de retour c'est à dire retourner le tableau qui contient la somme des deux tableaux

    et le retourner et c'est là ue reside tout mon probleme
    Enfait je pas trop comment

  13. #13
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    1_ Tu créer vecteur temp en premier
    2_ Tu rajoute le membre de droite
    3_ tu rajoute après le membre de droite le membre de gauche
    4_ tu retourne temp
    (si j'ai bien compris ce que tu veux)
    Homer J. Simpson


  14. #14
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par Astraya Voir le message
    1_ Tu créer vecteur temp en premier
    2_ Tu rajoute le membre de droite
    3_ tu rajoute après le membre de droite le membre de gauche
    4_ tu retourne temp
    (si j'ai bien compris ce que tu veux)
    A ceci près que l'opérateur + dois renvoyer... un objet de type vecteur
    Citation Envoyé par patricx Voir le message
    je comprend mieux

    pour y palier

    je fais ceci

    3- devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(i=0;i<Nblignes;i++)
    {
        tabl[i]+=vecter.tab[i];
    }
    C'est déjà mieux
    à partir de 4- je vois pas trop comment palier à
    je voudrais
    Créer un type de retour c'est à dire retourner le tableau qui contient la somme des deux tableaux

    et le retourner et c'est là ue reside tout mon probleme
    Enfait je pas trop comment
    Peut-être serait il intéressant d'envisager de... créer un constructeur supplémentaire
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Points : 42
    Points
    42
    Par défaut
    _ Tu créer vecteur temp en premier
    2_ Tu rajoute le membre de droite
    3_ tu rajoute après le membre de droite le membre de gauche
    4_ tu retourne temp
    (si j'ai bien compris ce que tu veux)

    4- est mon probleme meme je fais return *tabl ou return tabl ya pas resultat meme erreur

  16. #16
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 043
    Points : 2 234
    Points
    2 234
    Par défaut
    bon.....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    vecteur vecteur::operator+(const vecteur& vecter)
    {
        vecteur temp;
     
        //Tu additione les deux vecteurs
     
        return temp;
    }
    Si tu fais ça sa compilera...
    Homer J. Simpson


  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Points : 42
    Points
    42
    Par défaut
    bonjour et desolé mais ça me pose le meme probleme

    voici 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
    20
    21
    22
    23
     
    vecteur vecteur::operator+(const vecteur& vecter)
      { int i;
          vecteur *tabl=new vecteur(3);
     
     
        //les valeurs de vecteur1 sont chargés dans tabl
     
          for(i=0;i<Nblignes;i++)
          {
            tabl[i]=tab[i];
          }
     
        // somme des elements de tabl et vecteur2
          for(i=0;i<Nblignes;i++)
          {
            tabl[i]=tabl[i]+vecter.tab[i];
          }
     
     
        //retour du resulatt
          return *tabl; 
      }

Discussions similaires

  1. est ce possible de surcharger les operateurs
    Par dietrich dans le forum Delphi
    Réponses: 5
    Dernier message: 26/08/2006, 11h15
  2. Surcharge d operateur ==
    Par flipper203 dans le forum C++
    Réponses: 15
    Dernier message: 05/07/2006, 01h54
  3. [POO] surcharge d'operateur
    Par wamania dans le forum Langage
    Réponses: 6
    Dernier message: 20/04/2006, 14h31
  4. surcharge des operateurs de flux
    Par icer dans le forum C++
    Réponses: 6
    Dernier message: 22/02/2006, 09h02
  5. [POO] Surcharge d'opérateurs []
    Par Amnesiak dans le forum Langage
    Réponses: 28
    Dernier message: 11/11/2005, 12h44

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