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
|