[c++]surcharge d'operateur

surcharge d'operateur [c++] - C++ - Programmation

Marsh Posté le 05-02-2003 à 04:49:59    

voila j'essaie de faire une classe et d'uliser les surchage d'operateur
mais elle ne fonctionne pas  :(  
pouvez vous me dire pourquoi elle est bancale
[cpp]
code dans le dernier post/cpp]


Message édité par bol972 le 06-02-2003 à 04:35:51

---------------
http://www.independza.com
Reply

Marsh Posté le 05-02-2003 à 04:49:59   

Reply

Marsh Posté le 05-02-2003 à 07:31:43    

bol972 a écrit :


Code :
  1. bool date operator ==( const date& F)(
  2. date.s;
  3. if(s.anne>f.anne)
  4. {return(s);}
  5. else
  6. { if(s.mois>f.mois)
  7.      (return(s);}
  8.     else
  9.        {
  10.          if(s.jour>f.jour)
  11.            {return(s);)
  12.        }
  13. return(F);
  14. }
  15. }




faut comparer par rapport à this. ici tu crées s et tu le compares à f. tu peux pas non plus retourner s ou f, faut un booléen (true/false).
 

bol972 a écrit :


Code :
  1. iostream& operator<<( iostream& flux,Date& D)
  2. //surchage de l'operateur
  3. {
  4. cout<<"entrez le jours.\n";
  5. flux>>D.jour;
  6. cout<<"entrez  le mois.\n";
  7. flux>>D.mois;
  8. cout<<"entrez l'année.\n";
  9. flux>>D.année;
  10. return(flux);
  11. };




pour flux utilise pas un iostream mais un istream
 

bol972 a écrit :


Code :
  1. iostream& operator>>( ostream& flux,Date& D)
  2. //surchage de l'operateur
  3. {
  4. cout<<"entrez le jours.\n";
  5. flux>>D.jour;
  6. cout<<"entrez  le mois.\n";
  7. flux>>D.mois;
  8. cout<<"entrez l'année.\n";
  9. flux>>D.année;
  10. return(flux);
  11. } ;




celui est totalement faux, tu écris dans un ostream
 
Dernier conseil: achéte un bouquin


Message édité par gloop le 05-02-2003 à 07:32:42
Reply

Marsh Posté le 06-02-2003 à 04:33:58    

j'ai deja un bouquin et des cours je suis en licence d'info j'ai pas fais de dev l'annee dernière mais du reseau.
voila la class sans erreur j'ai essaye de faire un tri avec une fonction tri bulle
ca n'as pas l'air de fonctionner
si je veux faire passage par reference  
je dois bien ecrire  
EX int & x ; ?

Code :
  1. void tri_bull(date &tableau[],int size)
  2. {
  3. int inversion;
  4. date c;
  5. do
  6. {
  7.   inversion=0;
  8.     for(int i=0;i<size;i++)
  9.        {
  10.           if (tableau[i]>tableau[i+1])
  11.              {
  12.              c=tableau[i];
  13.              tableau[i]=tableau[i+1];
  14.              tableau[i+1]=c;
  15.              inversion=1;
  16.              }
  17.        }
  18. while(inversion==0);
  19. };


Code :
  1. #include <iostream.h>
  2. #include <istream.h>
  3. #include <string>
  4. class date{
  5. public :
  6. date ();
  7. date(int x,int y,int z);
  8. void tri_bull(date &tableau[],int size) ;// trie le tableau
  9. bool operator>(const date& F);
  10. ~date();
  11. friend ostream& operator<<(ostream&,const date& D);
  12. friend istream& operator>>(istream&,date& D);
  13. private:
  14. int jour;
  15. int mois;
  16. int annee;
  17. };
  18. // déclaration des métodes
  19. date::date()    // constructeur par defaut
  20. {
  21. jour=1;
  22. mois=1;
  23. annee=2003;
  24. };
  25. date::date(int x,int y,int z)// mon prof mets de construteurs par assignation mais a quoi ca sert ?
  26. {
  27. x= jour;
  28. y= mois;
  29. z= annee;
  30. };
  31. void tri_bull(date &tableau[],int size)
  32. {
  33. int inversion;
  34. date c;
  35. do
  36. {
  37.   inversion=0;
  38.     for(int i=0;i<size;i++)
  39.        {
  40.           if (tableau[i]>tableau[i+1])
  41.              {
  42.              c=tableau[i];
  43.              tableau[i]=tableau[i+1];
  44.              tableau[i+1]=c;
  45.              inversion=1;
  46.              }
  47.        }
  48. while(inversion==0);
  49. };
  50. bool date::operator>(const date& F)
  51. {
  52.    if(this->annee > F.annee)
  53.    {
  54.    return true;
  55.    }
  56.    else if ( this->mois > F.mois && this->annee == F.annee)
  57.    {
  58.    return true ;
  59.    }
  60.    else if (this->jour > F.jour && this-> mois == F.mois)
  61.    {
  62.    return true ;
  63.    }
  64.    else return false;
  65. };
  66. ostream& operator<<(ostream& flux,const date& D)
  67. {
  68. return flux <<D.jour<<"/"<<D.mois<<"/"<<D.annee<<"\n";
  69. };
  70. istream& operator>>(istream& flux,date& D)
  71. {
  72. cout<<"entrez le jours.\n";
  73. flux>>D.jour;
  74. cout<<"entrez le mois.\n";
  75. flux>>D.mois;
  76. cout<<"entrez l'année.\n";
  77. flux>>D.annee;
  78. return flux;
  79. };


---------------
http://www.independza.com
Reply

Marsh Posté le 06-02-2003 à 06:01:24    

Reply

Sujets relatifs:

Leave a Replay

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