Bonjour,
Voilà mon problème:
J'ai une classe A avec des attributs string que je sauvegarde en XML.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Class A { public: string _nom; string _prenom; template<class Archive> void serialize(Archive& ar, const unsigned in version){ ar & boost::serialization::make_nvp("Nom", _nom); ar & boost::serialization::make_nvp("Prenom", _prenom); } }La classe est correctement sauvegardée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 A _a; void save() const { ... oTextArchive::xml_oarchive oTextArchive(ofile); oTextArchive << make_nvp("A", _a); ... }
Par contre si j'essaye de recharger la sauvegarde:
L'attribut _a n'est pas modifié et garde sa précédente valeur.
La seule façon de la faire fonctionner c'est d'utiliser une variable intermédiaire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void load() { ... iTextArchive::xml_oarchive iTextArchive(ifile); iTextArchive >> make_nvp("A", _a); ... }
Quelqu'un saurait-il pourquoi je ne peux pas charger cette variable directement?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void load() { ... A _tmp; iTextArchive::xml_oarchive iTextArchive(ifile); iTextArchive >> make_nvp("A", _tmp); _a = _tmp; ... }
Merci
Partager