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

C++ Discussion :

fstream dans une classe


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    86
    D�tails du profil
    Informations personnelles :
    �ge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 86
    Par d�faut fstream dans une classe
    Salut,
    j'ai un probl�me de d�claration de fstream (acc�s �criture et lecture d'un fichier) dans une classe
    en gros:

    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
    18
     
    A.h
     
    classe A
    {
    private:
    fstream file;
     
    public
    A(string& filename);
    }
     
    A.cpp
     
    A::A(string& filename)
    {
    file.open(filename); // peut etre qu'il faut un petit .c_str() mais la n'est pas le probleme.
    }
    Donc, mon probleme, c'est qu'a la compile il me dit:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    error: field 'file' has incomplete type //en pointant sur la ligne déclaration du .h
    du coup je ne sais pas comment declarer mon fstream :/
    merci d'avance
    dom
    ps: j'ai bien chercher dans des refs ou des tutos, mais ils ne parlent pas de declaration dans un classe.

  2. #2
    Invit�(e)
    Invit�(e)
    Par d�faut
    Bonjour,

    En rempla�ant par �a ne fonctionne pas mieux ?

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    86
    D�tails du profil
    Informations personnelles :
    �ge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 86
    Par d�faut
    merci mabu mais en fait cette erreur n'existe que sur mon exemple (ouf) (mais c'est bien mon genre de tout fa�ons )
    (je corrige de suite) mon probleme est toujours la...
    mais ya t il une regle pour declarer un fstream dans une classe? a prioris il faut le definir tout de suite mais, je veux pouvoir instencier ma classe plusierus fois avec un fichier different je trouve ca louche, est ce que la declaration d'un fstream dans une classe pause probleme en general ou pas du tout?

  4. #4
    R�dacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supa�ro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Ing Supa�ro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par d�faut
    #include <fstream> avec std:: devant et ca ira mieux.
    Car tu essaie de cr�er un objet complet de type fstream. Pour y arriver, il faut que tout la d�claration de la classe soit connu. On connait cette d�claration via l'inclusion de l'en t�te.

    Donc ton code devient:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //A.h
    #include <fstream>
    classe A
    {
    private:
    std::fstream file;
     
    public
    A(std::string& filename);
    }
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une tr�s bonne doc sur le C++ (en) Why linux is better (fr)

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    86
    D�tails du profil
    Informations personnelles :
    �ge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 86
    Par d�faut
    oh la la la.... le boulet.... quand je disais que c'etait bien mon genre....
    merci Davidbrcz!! (beaucoup!)
    promis j'arrete ... enfin j'essaye!
    dom

  6. #6
    Invit�(e)
    Invit�(e)
    Par d�faut
    Hum comment se fait il qu'il faille std:: pour fstream, mais pas pour string ??

    Sinon, aux erreurs de recopie pres, je n'ai pas de probl�me avec :

    Code fs.h : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    class A
    {
    private:
    fstream file;
     
    public:
    A(string& filename);
    };

    Code fs.cc : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <fstream>
    #include <string>
    using namespace std;
    #include "fs.h"
     
    A::A(string& filename)
    {
    file.open(filename.c_str()); // peut etre qu'il faut un petit .c_str() mais la n'est pas le probleme.
    }

  7. #7
    R�dacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supa�ro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Ing Supa�ro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par d�faut
    Hum comment se fait il qu'il faille std:: pour fstream, mais pas pour string ??
    L'inattention, je corrige.

    Sinon mabu pour ton 2eme code, c'est normal car le pre-processeur copie et colle le code qu'on lui dit d'inclure. Avec les inclusions que tu fait avant et le using, ca passe mais si tu le faisait pas, ca casserai. De plus, tu brise la r�gle comme moi tout fichier doit �tre ind�pendant.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une tr�s bonne doc sur le C++ (en) Why linux is better (fr)

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    86
    D�tails du profil
    Informations personnelles :
    �ge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 86
    Par d�faut
    mabu, j'avais juste fait un code basique representant le schema de vrai code, et il se trouve que j'avais oubli� d'inclure fstream, mais string y est lui
    merci encore!!!
    A+ (tard )
    dom

  9. #9
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Au passage, ta r�f�rence vers string devrait �tre une r�f�rence constante.
    Ou mieux, prendre directement un char const *, puisque c'est ce que demande fstream. �a �vitera, si tu appelles ta classe avec une cha�ne litt�rale, de cr�er une std::string pour rien...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 8
    Dernier message: 09/07/2005, 23h10
  2. classe dans une classe ?
    Par tut dans le forum UML
    R�ponses: 23
    Dernier message: 25/06/2004, 15h00
  3. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum G�n�ral Java
    R�ponses: 5
    Dernier message: 03/06/2004, 08h15
  4. Thread dans une classe ?
    Par Sephi dans le forum Threads & Processus
    R�ponses: 7
    Dernier message: 07/03/2004, 18h16
  5. Fonction callback dans une classe
    Par julian_ross dans le forum MFC
    R�ponses: 8
    Dernier message: 02/03/2004, 11h42

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