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

Résolu/Fermé
Towers Messages postés 37 Date d'inscription samedi 2 février 2008 Statut Membre Dernière intervention 10 mai 2012 - 2 févr. 2008 à 19:38
Towers Messages postés 37 Date d'inscription samedi 2 février 2008 Statut Membre Dernière intervention 10 mai 2012 - 3 févr. 2008 à 17:09
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
A voir également:

2 réponses

Towers Messages postés 37 Date d'inscription samedi 2 février 2008 Statut Membre Dernière intervention 10 mai 2012 3
3 févr. 2008 à 17:09
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 
1
Towers Messages postés 37 Date d'inscription samedi 2 février 2008 Statut Membre Dernière intervention 10 mai 2012 3
3 févr. 2008 à 14:54
up ^^
0