IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

[Classe avec fstream] Accès à chaîne privée


Sujet :

SL & STL C++

  1. #1
    Membre éclairé Avatar de Jean_Benoit
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 499
    Par défaut [Classe avec fstream] Accès à chaîne privée
    Bonjour,

    J'ai déclaré une classe destinée à lire un fichier ASCII avec <fstream> comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    class Simple {
    		string chaine;
    	public:
    		Simple ( string initial_chaine);
    		~Simple();
    		// methode lit une ligne
    		void reads_a_line( fstream one_file )
    			{
    				string une_ligne;
    				getline ( one_file, une_ligne );
    			}
    		// method affiche une ligne
    		string printsimple( string mystring ){
    			string fin = " enfin";
    			return ( mystring +  fin);
    		}
    };
    Ensuite j'essaie de lire puis d'afficher comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	// meme lecture mais avec data et method de la classe
    	fstream myFile2;
    	myFile2.open( "le_fichier_a_skis.txt", ios::in );
    	while ( ! myFile2.eof() )
    	{
    		s.reads_a_line( myFile2 );
    		//cout << s.printsimple( s.chaine ) << endl;
    	}
    	myFile2.close();
    La compile génère ces messages:
    C:\jbmorla\data\sources\cplusplus\VASILIU\fich_dyn>make a=simple
    g++ -g -Wall -MD -c Simple.cpp -o Simple.o
    Simple.cpp: In copy constructor `std::basic_ios<char, std::char_traits<char> >::
    basic_ios(const std::basic_ios<char, std::char_traits<char> >&)':
    C:/Program Files/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++
    /3.4.4/bits/ios_base.h:781: error: `std::ios_base::ios_base(const std::ios_base&
    )' is private
    Simple.cpp:55: error: within this context
    Simple.cpp: In copy constructor `std::basic_filebuf<char, std::char_traits<char>
    >::basic_filebuf(const std::basic_filebuf<char, std::char_traits<char> >&)':
    C:/Program Files/CodeBlocks/bin/../lib/gcc/mingw32/3.4.4/../../../../include/c++
    /3.4.4/streambuf:769: error: `std::basic_streambuf<_CharT, _Traits>::basic_strea
    mbuf(const std::basic_streambuf<_CharT, _Traits>&) [with _CharT = char, _Traits
    = std::char_traits<char>]' is private
    Simple.cpp:55: error: within this context
    Simple.cpp: In function `int main(int, char**)':
    Simple.cpp:55: error: initializing argument 1 of `void Simple::reads_a_line(st
    d::fstream)'
    make: *** [Simple.o] Error 1
    Auxquels je ne comprends goutte, sinon que j'essaie d'accéder à quelquechose de "private", mais quoi? (la ligne 55 est la fin du source)

    En fait je voudrais que la classe "Simple" lise depuis le fichier dans la string private "chaine", pour que ça ressemble à de l'Objet.

    So Houston I have a problem!!!

    Merci si vous avez une idée

    Bonne journée.

  2. #2
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void reads_a_line( fstream one_file )
    Remplacé par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void reads_a_line( fstream &one_file )
    ?

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Explication pour compléter la réponse de Ti-R : les flux standards ne sont pas copiables (-> leur constructeur par copie est déclaré privé), tu es donc obligé de les passer par référence.

  4. #4
    Membre éclairé Avatar de Jean_Benoit
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 499
    Par défaut
    Tested and approved!

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Difficultés avec les Listes chaînées de classe
    Par Tyra3l dans le forum Langage
    Réponses: 4
    Dernier message: 13/01/2011, 18h07
  2. Heritage de classe avec classes internes
    Par Regis.C dans le forum Langage
    Réponses: 11
    Dernier message: 27/04/2005, 12h19
  3. Problème avec fstream
    Par cach dans le forum SL & STL
    Réponses: 17
    Dernier message: 27/02/2005, 12h28
  4. probleme compilation classe avec Borland c++ compiler 5.5
    Par softblue dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 17/06/2004, 15h16
  5. Objets/Classes avec un SGBD
    Par tiboleo dans le forum Décisions SGBD
    Réponses: 13
    Dernier message: 09/11/2003, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo