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

  FORUM HardWare.fr
  Programmation
  C++

  surcharge operateur <

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

surcharge operateur <

n°1626276
arcamino
Posté le 18-10-2007 à 12:19:17  profilanswer
 

Voila j'ai un exercice de gestion de pile et l'on me demande de pouvoir empiler en utilisant l'operateur <.
 
ex: une classe Pile qui empile des entiers.
 
Pile P1;
P1<3<4<7;
 
je sais très bien comment surcharger pour faire P1<3 mais comment faire pour que cela puisse être geré en série de cette façon?
 
merci de votre attention.

mood
Publicité
Posté le 18-10-2007 à 12:19:17  profilanswer
 

n°1626278
did-54
Posté le 18-10-2007 à 12:22:46  profilanswer
 

au risque de dire une connerie, ca doit revenir au même si P1<3<4<7 est évalué de gauche à droite non ?

n°1626309
IrmatDen
Posté le 18-10-2007 à 13:17:56  profilanswer
 

Salut,
 
Plutôt que surcharger '<' (qui signifie "inférieur à" ), tu devrais surcharger '<<' (qui signifie grosso modo "insérer dans" ).
Et donc, en te basant sur la définition d'une telle fonction, tu devrais obtenir certains éléments de réponse.
 
Et en dernière alternative, tu trouveras ta réponse en lisant un peu

n°1626445
Taz
bisounours-codeur
Posté le 18-10-2007 à 14:38:49  profilanswer
 

Code :
  1. // définis une fonction membre
  2. void Pile::add(Element);
  3. // puis une fonction libre pour te fournir ton sucre syntaxique
  4. Pile& operator<<(Pile &p, Element t)
  5. {
  6.   p.add(t);
  7.   return p;
  8. }

n°1626480
arcamino
Posté le 18-10-2007 à 14:57:56  profilanswer
 

Merci pour vos réponses.
pour l'idée d'utiliser << plutot que < je ne peux pas car il faut que mon code puis faire fonctionner le main donné tel quel (c'est un exercice de TP).
Pour ton code Taz, j'ai essayé et ca ne fonctionne pas car je l'utilise avec l'operateur < et selon le compilateur il ne peut prendre qu'un argument.

n°1626482
Taz
bisounours-codeur
Posté le 18-10-2007 à 14:59:38  profilanswer
 

bah cherche au fond de toi les ressources suffisante pour supprimer 1 <

n°1626531
IrmatDen
Posté le 18-10-2007 à 15:29:01  profilanswer
 

arcamino a écrit :

pour l'idée d'utiliser << plutot que < je ne peux pas car il faut que mon code puis faire fonctionner le main donné tel quel (c'est un exercice de TP).


 [:pingouino]  [:roane]  [:pingouino]  
Tu veux pas lui demander si lui aurais fait une faute de frappe?

arcamino a écrit :

Pour ton code Taz, j'ai essayé et ca ne fonctionne pas car je l'utilise avec l'operateur < et selon le compilateur il ne peut prendre qu'un argument.


M'est avis que tu as mal lu le code de Taz... (enfin, surtout le commentaire de operator<< )

n°1626538
Joel F
Real men use unique_ptr
Posté le 18-10-2007 à 15:45:23  profilanswer
 

surcharger un opérateur en changeant sa sémantique c'ets une mauvaise habitude. Donc j'ESPERE que c'est une faute de frappe dans le sujet

n°1626720
arcamino
Posté le 18-10-2007 à 18:07:11  profilanswer
 

bon j'ai trouvé donc je donne la solution :

Code :
  1. CBasePile& CBasePile::operator<(int nb)
  2. {
  3.      if (mSommet==mTaillemax-1)
  4.      cout<<"pile remplie"<<endl;
  5.      else
  6.      {
  7.       pPile[mSommet]=nb;
  8.       mSommet++;
  9.      }
  10.      return *this;
  11. }


On peut ainsi faire :  

Code :
  1. CBasePile P1;
  2. P1<3<4<7;


 
Merci à tous pour vos réponses.


Message édité par arcamino le 18-10-2007 à 18:08:32
n°1626734
IrmatDen
Posté le 18-10-2007 à 18:40:04  profilanswer
 

C'est un peu crade:

IrmatDen a écrit :

M'est avis que tu as mal lu le code de Taz... (enfin, surtout le commentaire de operator<< )


Taz a écrit :

Code :
  1. // définis une fonction membre
  2. void Pile::add(Element);
  3. // puis une fonction libre pour te fournir ton sucre syntaxique
  4. Pile& operator<<(Pile &p, Element t)
  5. {
  6.   p.add(t);
  7.   return p;
  8. }



Message édité par IrmatDen le 18-10-2007 à 18:40:34
mood
Publicité
Posté le 18-10-2007 à 18:40:04  profilanswer
 

n°1626866
Taz
bisounours-codeur
Posté le 18-10-2007 à 22:57:02  profilanswer
 

superbe gestion d'erreur quand la pile est pleine

n°1626878
KangOl
Profil : pointeur
Posté le 18-10-2007 à 23:23:39  profilanswer
 

oui, c'est sur cerr qu'il faut afficher le message :o


Message édité par KangOl le 18-10-2007 à 23:24:03
n°1627641
arcamino
Posté le 19-10-2007 à 19:32:22  profilanswer
 

Merci du conseil.
je ne suis qu'un pauvre etudiant qui de toute façon se destine plutot à faire de l'embarqué.
mais je sais qu'il vaut mieux éviter les affichages dans les méthodes.

n°1628005
Taz
bisounours-codeur
Posté le 20-10-2007 à 16:25:57  profilanswer
 

arcamino a écrit :

Merci du conseil.
je ne suis qu'un pauvre etudiant qui de toute façon se destine plutot à faire de l'embarqué.
mais je sais qu'il vaut mieux éviter les affichages dans les méthodes.


absolument aucun rapport.


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

  surcharge operateur <

 

Sujets relatifs
Probleme de surcharge d'opérateur et de fonction amiessurcharge de l'opérateur =
Surcharge de l'opérateur = + Appel non souhaité à deleteSurcharge d'opérateur sur des structures
surcharge opérateur [ ]Surcharge d'opérateur
surcharge de l'operateur >>Surcharge d'opérateur : comprend pas
(résolu) surcharge operateur <<(aide) Surcharge d'operateur en c++
Plus de sujets relatifs à : surcharge operateur <


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)