Rechercher : dans
Par :

C++, héritage, écriture sur les fichiers

Dernière réponse le 3 fév 2008 à 17:09:48 Towers, le 2 fév 2008 à 19:38:15 
 Signaler ce message aux modérateurs

Bonjour,

Je cherche à concevoir un programme utilisant 4 classes :
une classe générale Ensemble qui contient des occurences de la classe A.

B et C héritent de A : A est virtuelle pure.

J'aimerais pouvoir enregistrer le contenu de l'Ensemble dans un Fichier.
Voilà ce que je fait dans Ensemble :

void Ensemble::Enregistrer ( char * nomFichier ) const
{
    ofstream fichDest (nomFichier , ios::out | ios :: binary | ios ::trunc);
    if (fichDest)
    {
        for (int i=0;i<Occurences.size();i++)
        {
            Occurences[i]->Enregistrer( fichDest );   //NB : Occurences : vector de A
            cout << endl;
        }  
    }
    fichDest.close();
}

Comment pouvoir écrire les occurences de A (donc de B et C) sur le fichier ? Sachant que j'ai envie de ne l'ouvrir qu'une seule fois au début. J'ai pensé à faire :

virtual void Enregistrer ( ofstream fichDest ) const =0;    //Methode virtuelle pure
void B::Enregistrer ( ofstream fichDest  ) const
{}                  //pas encore implémentée

void C::Enregistrer ( ofstream fichDest  ) const
{}                  //pareil 


Bien évidémment je fait des
#include fstream
au début de tous les fichiers qui en ont besoin

J'ai un problème que je ne sais pas régler pour l'instant : actuellement je ne peux pas compiler le progamme (je pense que c'est le fait de passer en paramètre
ofstream fichDest
: le compilo m'ouvre la classe
ios_base
mais je doute qu'il y ait un problème dedans :D

Si vous avez des idées, une réponse, une piste, merci de me donner un coup de main

Bonne soirée
Configuration: Je travaille sous Vista actuellement mais il n'y a pas de SE spécifique

Meilleures réponses pour « C++, héritage, écriture sur les fichiers » dans :
[MS-Dos] Ecrire dans un fichier texte en batch VoirPour écrire dans un fichier texte, il suffit d'utiliser une redirection ">" : echo texte_à_ecrire > fichier_de_sortie.txt Pour écrire à la fin d'un texte existant (concaténation) : echo "écriture a la fin du fichier ">>...
Compiler du C sous Linux/UNIX VoirSous Linux, le compilateur de C est gcc. Il est installé de base sur plusieurs distributions, mais sur Debian (et celles qui en découlent) il faudra l'installer (aptitude install gcc). gcc Syntaxe de GCC gcc Tout d'abord, il faut savoir...
Fichiers sqmdata**.sqm et sqmnoopt**.sqm VoirLes fichiers sqmdata**.sqm et sqmnoopt**.sqm Vous avez peut-être remarqué un nombre important de fichiers au format SQM sur votre disque dur. Ceux-ci sont sous la forme sqmdata**.sqm ou sqmnoopt**.sqm (** sont deux chiffres aléatoires) A la...
Qu'est-ce qu'un fichier? VoirQu'est-ce qu'un fichier? Un fichier est une suite d'informations binaires, c'est-à-dire une suite de 0 et de 1. Ce fichier peut être stocké pour garder une trace de ces informations. Un fichier texte est un fichier composé de caractères stockés...

1

Towers, le 3 fév 2008 à 14:54:43

Up ^^

Répondre à Towers

2

 Towers, le 3 fév 2008 à 17:09:48
  • +1

Réglé !

Il suffisait de passer oftream fichDest en référence !!

Juste 2/3 petits & qui me manquaient...

void A::Enregistrer ( const char * nomFichier ) const
{
    ofstream fichDest(nomFichier, ios::out | ios::binary | ios::trunc);
    if (fichDest)
    {
        for (int i=0;i<Occurences.size();i++)
        {
            Occurences[i]->Enregistrer( fichDest );   //NB : Occurences : vector de A
            cout << endl;
        }  
    }
    fichDest.close();
}

virtual void Enregistrer ( ofstream & fichDest ) const =0;    //Methode virtuelle pure de A

void B::Enregistrer ( ofstream & fichDest  ) const
{}                  //pas encore implémentée

void C::Enregistrer ( ofstream & fichDest  ) const
{}                  //pareil 

Répondre à Towers
Collection CommentÇaMarche.net