[C++] iostream

iostream [C++] - C++ - Programmation

Marsh Posté le 18-06-2005 à 22:57:37    

Voilà j'ai une classe Emprunteur et une class Collection Emprunteur.
Dans ma classe Emprunteur j'ai déclaré un stream :

Code :
  1. ostream & operator << ( ostream& O, Emprunteur &emprunteur  ) ;
  2. ostream& Emprunteur :: operator << ( ostream& O, Emprunteur &emprunteur )
  3. {
  4. O << emprunteur.getNom() << " " << emprunteur.Prenom() << " " << emprunteur.getAdresse << " " << emprunteur.getVille << " " << emprunteur.getCodePostal << " " << emprunteur.getPays << endl ;
  5. return O ;
  6. }


 
 
Et dans ma collection :
ostream & operator << ( ostream& O ) ;

Code :
  1. ostream & ListEmprunteurs :: operator << ( ostream& O )
  2. {
  3. int i;
  4. for( i=0; i < laListEmprunteurs.getNbElements(); i++ )
  5. {
  6.  cout << ( (Emprunteur)( *laListEmprunteurs[ i ] ) ) ;
  7. }
  8.         //Avec laListEmprunteurs attribut de la classe ListEmprunteurs
  9. return O;
  10. }


 
Ca ne fonctionne pas. Faut il obligatoirement passer un objet du type en ref?
comme ceci :
ostream& Emprunteur :: operator << ( ostream& O, Emprunteur &emprunteur );
ostream & operator << ( ostream& O, ListEmprunteurs  &uneListEmprunteurs ) ;
 
Je précise que j'ai fait un import :
#include <iostream.h>


Message édité par Spir le 18-06-2005 à 22:58:28
Reply

Marsh Posté le 18-06-2005 à 22:57:37   

Reply

Marsh Posté le 18-06-2005 à 23:11:25    

t'importe rien du tout.
 
#include <iostream>
using namespace std;
 
 
 
ostream& Emprunteur :: operator << ( ostream& O, Emprunteur &emprunteur );
ostream & operator << ( ostream& O, ListEmprunteurs  &uneListEmprunteurs ) ;  
 
dans les deux cas, c'est faux. le prototype doit être
 
ostream& operator<<(ostream& os, const T& t);
 
 
 ( (Emprunteur)( *laListEmprunteurs[ i ] ) ) ;
 
ça te sert à quoi ce cas tout pourri ?
 
d'ailleurs, il te sert à quoi le paramètre ostream si tu écris systématiquement sur cout ?

Reply

Marsh Posté le 19-06-2005 à 00:11:00    

Taz a écrit :

t'importe rien du tout.
 
#include <iostream>
using namespace std;
 
 
 
ostream& Emprunteur :: operator << ( ostream& O, Emprunteur &emprunteur );
ostream & operator << ( ostream& O, ListEmprunteurs  &uneListEmprunteurs ) ;  
 
dans les deux cas, c'est faux. le prototype doit être
 
ostream& operator<<(ostream& os, const T& t);
 
 
 ( (Emprunteur)( *laListEmprunteurs[ i ] ) ) ;
 
ça te sert à quoi ce cas tout pourri ?
 
d'ailleurs, il te sert à quoi le paramètre ostream si tu écris systématiquement sur cout ?


 
Ouais je me suis planté...
 

Code :
  1. ostream& operator << ( ostream& O, const Emprunteur &emprunteur ) ;
  2. ostream & Emprunteur :: operator << ( ostream& O, const Emprunteur &emprunteur  )
  3. {
  4. O << emprunteur.getNom() << " " << emprunteur.getPrenom() << " " << emprunteur.getAdresse() << " " << emprunteur.getVille() << " " << emprunteur.getCodePostal() << " " << emprunteur.getPays() << endl ;
  5. return O;
  6. }


error C2804: binary 'operator <<' has too many parameters
 
Pourquoi??


Message édité par Spir le 19-06-2005 à 00:17:45
Reply

Marsh Posté le 19-06-2005 à 00:13:46    

parceque

Reply

Marsh Posté le 19-06-2005 à 00:16:34    

aaaah

Reply

Marsh Posté le 19-06-2005 à 00:20:11    

# ostream& operator << ( ostream& O, const Emprunteur &emprunteur ) ;
#
# ostream & Emprunteur :: operator << ( ostream& O, const Emprunteur &emprunteur);
 
t'es lourds avec tes conneries. C'est quoi ces espaces dans tous les sens, et qu'est-ce qui te prends de déclarer 2 chose contradictoires. .. et tes messages d'erreur, tu te les gardes, on peut pas deviner ce qui se passe si tu ne donnes même pas la ligne concernée. Aide toi toi-même.

Reply

Marsh Posté le 19-06-2005 à 00:22:36    

Taz a écrit :

# ostream& operator << ( ostream& O, const Emprunteur &emprunteur ) ;
#
# ostream & Emprunteur :: operator << ( ostream& O, const Emprunteur &emprunteur);
 
t'es lourds avec tes conneries. C'est quoi ces espaces dans tous les sens, et qu'est-ce qui te prends de déclarer 2 chose contradictoires. .. et tes messages d'erreur, tu te les gardes, on peut pas deviner ce qui se passe si tu ne donnes même pas la ligne concernée. Aide toi toi-même.


Bah le message d'erreur concerne la ligne de déclaration de la méthode dans le .h

Reply

Marsh Posté le 19-06-2005 à 00:24:19    

si tu le dis ... vu qu'à aucun moment tu ne déclares de méthodes ...

Reply

Marsh Posté le 19-06-2005 à 00:27:34    

ostream& operator << ( ostream& O, const Emprunteur &emprunteur ) ;  
 
Ca c'est une déclaration de méthode.
le ";" le montre bien...
 
Et ca :
 
ostream & Emprunteur :: operator << ( ostream& O, const Emprunteur &emprunteur)
{  
 O << emprunteur.getNom() << " " << emprunteur.getPrenom() << " " << emprunteur.getAdresse() << " " << emprunteur.getVille() << " " << emprunteur.getCodePostal() << " " << emprunteur.getPays() << endl ;
 return O;
}
 
C'est la méthode dans le .cpp

Reply

Marsh Posté le 19-06-2005 à 00:30:44    

non c'est une déclaration de fonction. avec des espaces pourris dans tous les sens.
Ensuite c'est la définition d'une fonction membre dans un cpp.
 
Bref, y a rien de valide. Pour toute entité, il faut une déclaration et une définition.

Reply

Sujets relatifs:

Leave a Replay

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