Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2214 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [class] Surcharge d'opérateur +

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[class] Surcharge d'opérateur +

n°909075
vincent0
Posté le 27-11-2004 à 11:54:08  profilanswer
 

Bonjour,
 
Dans la fonction "main" de mon programme j'ai ceci:

Code :
  1. surcharge_plus exemple('a');
  2. exemple = exemple + 'b';
  3. exemple.affi();


 
Et j'aimerais bien qu'il me retourne ce résultat: "ab", mais j'y arrive pas :(
 
Voici ma classe:

Code :
  1. class surcharge_plus{
  2.   public:
  3.    surcharge_plus(char); //Constructeur
  4.    surcharge_plus operator+(char);
  5.    void affi(){cout<<deux_lettres;}
  6.   private:
  7.    char deux_lettres[2];
  8. };
  9. surcharge_plus::surcharge_plus(char lettre){
  10.   deux_lettres[0] = lettre;
  11. }
  12. surcharge_plus surcharge_plus::operator+(char lettre_add){
  13.   deux_lettres[1] = lettre_add;
  14.   return deux_lettres;
  15. }


 
Merci d'avance...

mood
Publicité
Posté le 27-11-2004 à 11:54:08  profilanswer
 

n°909102
Panini
Posté le 27-11-2004 à 12:40:03  profilanswer
 

ton opérateur + retourne un char[] et non un surcharge_plus.
Tu devrais plutôt avoir ceci donc :

Code :
  1. surcharge_plus surcharge_plus::operator+(char lettre_add)
  2. {
  3.     deux_lettres[1] = lettre_add;
  4.     return *this
  5. }


 
mais ça reste mal. En effet cet operateur modifie this, c'est pas très courant pour un opérateur +. Qui plus est ta chaîne est non terminée par un '\0'. Il faudrait donc mieux que tu gère un tableau de char redimensionnable quand tu ajoutes des caractères et que tu t'assures de toujours terminer la chaîne.

n°909103
Taz
bisounours-codeur
Posté le 27-11-2004 à 12:42:47  profilanswer
 

si vous persistez dans la fonctiopn membre, de grâce, marquez la conste ....

n°909738
vincent0
Posté le 28-11-2004 à 18:47:09  profilanswer
 

Merci...mais:
 
-Que signifie exactement "return *this" ?
 
-Je vient de tester une autre façon de faire ma surcharge mais dès que je fait: " exemple = exemple + 'b';", la lettre "a" diparait, pourquoi ?
 

Code :
  1. #include <iostream>
  2. using namespace std;
  3. class surcharge_plus{
  4.   public:
  5.    surcharge_plus(char); //Constructeur
  6.    surcharge_plus(){} //Surcharge constructeur
  7.    surcharge_plus operator+(char);
  8.    void affi(){cout<<deux_lettres<<endl;}
  9.   private:
  10.    char deux_lettres[3];
  11. };
  12. surcharge_plus::surcharge_plus(char lettre){
  13.   deux_lettres[0] = lettre;
  14. }
  15. surcharge_plus surcharge_plus::operator+(char lettre_add){
  16.   surcharge_plus tmp;
  17.   tmp.deux_lettres[1]=lettre_add;
  18.   tmp.deux_lettres[2]='\0';
  19.   return tmp;
  20. }
  21. int main(){
  22.   surcharge_plus exemple('a');
  23.   exemple = exemple + 'b';
  24.   exemple.affi();
  25.   return 0;
  26. }

n°909814
Taz
bisounours-codeur
Posté le 28-11-2004 à 21:12:31  profilanswer
 

surcharge_plus operator+(char);
 
tout ce qu'il faut pas faire ...

n°909833
vincent0
Posté le 28-11-2004 à 21:37:28  profilanswer
 

Merci du conseil Taz mais qu'est ce qu'il faut faire alors ;) ?

n°909837
Taz
bisounours-codeur
Posté le 28-11-2004 à 21:41:05  profilanswer
 

tu fais  
 
 
TaClasse operator+(const TaClasse &autre) const
 
 
et x + 'a' sera évalué comme  x.operator+( TaClasse('a') )


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [class] Surcharge d'opérateur +

 

Sujets relatifs
Probleme class java + windows xpProbleme class java + windows xp
prob de surcharge de constructeur[jsp]problème à la compilation : class file contains wrong class
[Class] Constructeur et allocation de mémoire.Class Bdd
class mysqlipb de class PHP!!!
[C++] Gérer des priorités d'opérateuroperateur = besoin d'aide pour le comprendre
Plus de sujets relatifs à : [class] Surcharge d'opérateur +


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR