Chargement de serialization
Bonjour,
Voilà mon problème:
J'ai une classe A avec des attributs string que je sauvegarde en XML.
Code:
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);
}
} |
Code:
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);
...
} |
La classe est correctement sauvegardée.
Par contre si j'essaye de recharger la sauvegarde:
L'attribut _a n'est pas modifié et garde sa précédente valeur.
Code:
1 2 3 4 5 6 7 8
|
void load()
{
...
iTextArchive::xml_oarchive iTextArchive(ifile);
iTextArchive >> make_nvp("A", _a);
...
} |
La seule façon de la faire fonctionner c'est d'utiliser une variable intermédiaire.
Code:
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;
...
} |
Quelqu'un saurait-il pourquoi je ne peux pas charger cette variable directement?
Merci