1. #1
    Membre confirmé
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    janvier 2009
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : janvier 2009
    Messages : 783
    Points : 284
    Points
    284
    Billets dans le blog
    1

    Par défaut attribut de type ofstream

    Bonjour, j'ai une classe File dans la quelle j'ai déclarer un attribut ofstream afin de pouvoir le réutiliser partout dans ma classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class File
    {
        public:
            File(string filename);
            virtual ~File();
            void openWrite();
            void closeWrite();
            void writeInt(int i);
        protected:
        private:
            string filename;
            ofstream out;
    };
    Le problème c'est que si je veux ouvrir le flux out avec un nom de fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void File::openWrite() {
        out(filename.c_str());
        if(!out.is_open()) {
            cout << "impossible d'ouvrir '" << filename << "'" << endl;
            exit(EXIT_FAILURE);
        }
    }
    J'ai une erreur à la compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /home/pj/CPLUSPLUS/Drawing/src/File.cpp|10|erreur: no match for call to ‘(std::ofstream {aka std::basic_ofstream<char>}) (const char*)|
    la ligne 10 c'est out(filename.c_str());

    Merci pour votre aide !

  2. #2
    Membre émérite
    Inscrit en
    décembre 2008
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 533
    Points : 868
    Points
    868

    Par défaut

    out(filename.c_str()) ne fait pas ce que tu crois.
    Tu ne rappelles pas le constructeur ofstream::ofstream(const char*) de ton objet out, mais tu tentes d'appeler ofstream::operator()(const char*), c'est à dire une surcharge de l'opérateur parenthèses, qui n'existe pas dans la classe ofstream.

    Par contre, il existe la méthode open pour faire ce que tu souhaites.

  3. #3
    Membre confirmé
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    janvier 2009
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : janvier 2009
    Messages : 783
    Points : 284
    Points
    284
    Billets dans le blog
    1

    Par défaut

    Merci, cob59, ça fonctionne bien.

  4. #4
    Expert Confirmé Sénior
    Avatar de koala01
    Inscrit en
    octobre 2004
    Messages
    9 927
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : octobre 2004
    Messages : 9 927
    Points : 17 974
    Points
    17 974

    Par défaut

    Salut,

    Penses cependant, pour le cas où cela aurait une importance éventuelle, que le fait d'ouvrir un fichier peut le verrouiller sur certains systèmes, ce qui a pour effet de le rendre totalement inaccessible à toute application extérieure.

    Je n'attire ton attention là dessus que pour le cas où ta classe servirait pour un logger destiné à garder une trace pour une application tournant en permanence... Il serait dommage de devoir arrêter l'application pour pouvoir lire le log
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

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

Discussions similaires

  1. inserer un attribut de type Timestamp
    Par yanis97 dans le forum JDBC
    Réponses: 1
    Dernier message: 22/11/2006, 15h06
  2. comment recuperer attribut de type hidden
    Par MSM_007 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 19/07/2006, 12h04
  3. Réponses: 3
    Dernier message: 02/05/2006, 15h12
  4. probleme avec les attributs de type ID
    Par ben83 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 01/01/2006, 21h49
  5. Réponses: 3
    Dernier message: 20/09/2005, 08h59

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