cout<<"==============AFFICHAGE DES PREMIERS OBJETS CREE AVANT MODIFICATION================"<<endl;
cout<<"Groupe = "<<g1.getCode()<<endl;
return 0;
}
=======================Fin du code========================================
mon souci est le suivant je n'arrive pas à afficher l'attribut m_code de ma classe Groupe apres sauvegarde et restauration
Est ce que quelqu'un peut me proposer une solution SVP
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 12 avril 2013 à 11:29
Bonjour.
Tout d'abord, merci d'utiliser à l'avenir les balises de code.
Ensuite, pour ton souci, c'est normal que ça ne fonctionne pas. Tu écris "this" et cherche ensuite à écraser celui-ci avec l'ancien this que tu avais sauvegardé. Sauf que ce n'est pas possible. Quand on veut "sauvegarder" une classe, on cherche au final à sauvegarder les valeurs qui sont intéressantes et changeantes et non toute la classe (et tout ce que tu ne vois pas, et surement pas le pointeur lui même, qui aura forcément une adresse différente entre deux exécutions).
Pour faire ce que tu veux, il te faut changer les méthodes "sauvegarder" et "restaurer", et n'agir que sur les attributs de ta classe. C'est-à-dire écrire dans le fichier, les attributs un à un, puis les lors d'une restauration, les relire dans le bon ordre.
Quelques conseils:
- Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace - Pas besoin de faire un .close sur les fichier (std::ifstream et std::ofstream), ils se referment tout seul.
- Pas besoin de mettre un std::ios::in, sur un std::ifstream ou un std::ios::out sur un std::ofstream, c'est implicite.
- Ce que tu cherches à réaliser s'appelle la "sérialisation". Un outil qui fait très bien cela est "Google protobuf". Tu as aussi boost qui propose d'automatiser ce genre d'action (via boost::serialization).
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question