Utilisation d'ifstream dans une class

Utilisation d'ifstream dans une class - C++ - Programmation

Marsh Posté le 14-02-2007 à 21:06:20    

Bonjour tout le monde,
 
Débutant en C++ j'essaie de faire la chose suivante :
utiliser un flux de donnée lu a partir d'un fichier pour initialiser une class nommée ici Media.
 
Le problème ce produit a la compilation quand j'appel je constructeur utilisant un flux.
 
voilà le Media.h :
 

Code :
  1. #include <string>
  2. #include <fstream>
  3. using namespace std;
  4. #ifndef MEDIA_H_
  5. #define MEDIA_H_
  6. class Media{
  7. protected:
  8. string id;
  9. string titre;
  10. string auteur;
  11. public:
  12. Media();
  13. Media(string _id,string _titre,string _auteur);
  14. Media(ifstream flux);
  15. ~Media();
  16. string get_id();
  17. string get_titre();
  18. string get_auteur();
  19. };
  20. #endif /*MEDIA_H_*/


 
Voila le Media.cpp

Code :
  1. #include "Media.h"
  2. Media::Media(){
  3. id="";
  4. titre="";
  5. auteur="";
  6. cout << "Media créé" << endl;
  7. }
  8. Media::Media(string _id,string _titre,string _auteur){
  9. id=_id;
  10. titre=_titre;
  11. auteur=_auteur;
  12. cout << "Media créé" << endl;
  13. }
  14. Media::Media(ifstream flux){
  15.                       getline(flux,id,';');
  16.                       getline(flux,titre,';');
  17.                       getline(flux,auteur,';');
  18.                       }
  19. Media::~Media(){
  20. cout << "Média supprimé" << endl;
  21. }
  22. string Media::get_id(){
  23. return id;
  24. }
  25. string Media::get_titre(){
  26. return titre;
  27. }
  28. string Media::get_auteur(){
  29. return auteur;
  30. }


 
voila le main :

Code :
  1. #include "Media.h"
  2. int main(){
  3.     Media *m;
  4.     ifstream f;
  5.    
  6.     f.open("test.txt" );
  7.     m = new Media(f);
  8. }


 
L'erreur parle de fonction private utilisé dans des class dont hérite fstream
J'imagine que pour les puristes je fais une erreur grossière, mais la j'ai eu beau cherché sur le net je vois pas :(
 
Merci :)


---------------
La raison est la mesure de toutes choses!   Venez découvrir de la peinture pointilliste
Reply

Marsh Posté le 14-02-2007 à 21:06:20   

Reply

Marsh Posté le 14-02-2007 à 21:07:51    

Media::Media(ifstream& flux)
 
les stream n'ont pas de sémantique de copie

Reply

Marsh Posté le 14-02-2007 à 21:14:40    

Merci beaucoup, réponse rapide et précise :)
 
Bonne soirée :)

Reply

Sujets relatifs:

Leave a Replay

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