C++, héritage, écriture sur les fichiers
Résolu
Towers
Messages postés
37
Date d'inscription
Statut
Membre
Dernière intervention
-
Towers Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
Towers Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
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 :
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 :
Bien évidémment je fait des
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
Si vous avez des idées, une réponse, une piste, merci de me donner un coup de main
Bonne soirée
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 fstreamau 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_basemais 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:
- C++, héritage, écriture sur les fichiers
- Écriture facebook - Guide
- Ecriture en gras - Guide
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Ecriture instagram - Guide
2 réponses
Réglé !
Il suffisait de passer oftream fichDest en référence !!
Juste 2/3 petits & qui me manquaient...
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