surcharge operateur <

surcharge operateur < - C++ - Programmation

Marsh Posté le 18-10-2007 à 12:19:17    

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.

Reply

Marsh Posté le 18-10-2007 à 12:19:17   

Reply

Marsh Posté le 18-10-2007 à 12:22:46    

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

Reply

Marsh Posté le 18-10-2007 à 13:17:56    

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

Reply

Marsh Posté le 18-10-2007 à 14:38:49    

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. }

Reply

Marsh Posté le 18-10-2007 à 14:57:56    

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.

Reply

Marsh Posté le 18-10-2007 à 14:59:38    

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

Reply

Marsh Posté le 18-10-2007 à 15:29:01    

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<< )

Reply

Marsh Posté le 18-10-2007 à 15:45:23    

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

Reply

Marsh Posté le 18-10-2007 à 18:07:11    

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
Reply

Marsh Posté le 18-10-2007 à 18:40:04    

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
Reply

Marsh Posté le 18-10-2007 à 18:40:04   

Reply

Marsh Posté le 18-10-2007 à 22:57:02    

superbe gestion d'erreur quand la pile est pleine

Reply

Marsh Posté le 18-10-2007 à 23:23:39    

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


Message édité par KangOl le 18-10-2007 à 23:24:03
Reply

Marsh Posté le 19-10-2007 à 19:32:22    

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.

Reply

Marsh Posté le 20-10-2007 à 16:25:57    

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed