LePhasme Les Belges domineront le monde | Bonjour, j'ai un problème avec la rédéfinition de l'opérateur << pour un ofstream, tout compile sans problème seulement à l'écriture il ne passe pas dans la redéfinition. Alors que les arguments sont ( me semblent ) corrects.  Voici le code :  Code :
 - // Le main :
 - #include <iostream>
 - #include <fstream>
 - #include <string>
 - #include <vector>
 - #include "Client.h"
 - #include "ClientAbonne.h"
 - #include "Oeuvre.h"
 - #include "Representation.h"
 - #include "Reservation.h"
 - #include "ReservationGroupee.h"
 - #include "Menu.h"
 - using namespace std;
 - int main ( void )
 - {
 - vector<Client *> listeCli;
 - vector<Oeuvre> listeSpec;
 - Client * cl  = new Client("scalzo","Loris","rue test","06400" );
 - Oeuvre sp("les miserables","Victor Hugo" );
 - Oeuvre sp2("l'avare","Moliere" );
 - Representation rp("12/10/2005","16h00" );
 - sp.ajouterRepresentation(&rp);
 - listeSpec.push_back(sp);
 - listeSpec.push_back(sp2);
 - listeCli.push_back(cl);
 - ... // pas besoin du code ici, il s'agit simplement de la gestion d'un menu.
 - ofstream ecriture("clients_reservations.dat", ios::out );
 - for ( int i = 0; i < listeCli.size(); i++ )
 - {
 -   ecriture << listeCli[i]  // ici il devrait passer dans la redéfinition.
 - }
 - return 0;
 - }
 - // le fichier Client.h
 - #ifndef CLIENT_H
 - #define CLIENT_H
 - #include <iostream>
 - #include <fstream>
 - #include <string>
 - #include <vector>
 - #include "Reservation.h"
 - using namespace std;
 - class Client
 - {
 - private :
 -   string nom, prenom, adresse, numtel;
 -   vector <Reservation *> liste;
 -  
 - public :
 -   Client();
 -   Client ( string, string, string, string );
 -   Client( const Client & );
 -   ~Client();
 -   void modifier();
 -   virtual void affiche();
 -   virtual void afficheReservation();
 -   virtual void ajouterReservation(Reservation *);
 -   virtual void modifierReservation( int, Reservation * );
 -   virtual void listeReservation();
 -   int getNombreReservations();
 -   virtual void supprimerReservation(int );
 -   virtual ostream & ecriture ( ofstream & );
 -   const string getNom();
 -   const string getPrenom();
 -   const string getAdresse();
 -   const string getNumtel();
 -   void setNom(string);
 -   void setPrenom(string);
 -   void setAdresse(string);
 -   void setNumtel(string);
 - };
 - #endif
 - // la partie utile de Client.cpp :
 - ostream & Client::ecriture(ofstream & o )
 - {
 - return o << nom << "\t" << prenom << "\t";
 - }
 - ostream & operator<< (ofstream &o,  Client * c )
 - {
 - cout << "passage redef";
 - return o << c->ecriture( o ) ;
 - }
 
  |    Si vous pensez avoir besoin d'autres parties de codes n'hésitez pas à me demander.    Message édité par LePhasme le 29-12-2008 à 18:38:36
  |