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);
  }
}
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);
    ...
}
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 : 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);
    ...
}
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
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