J'essaie de suivre cet exemple http://www.boost.org/doc/libs/1_42_0/libs/serialization/doc/serialization.html#constructors mais je continue à recevoir des erreurs. Suivant l'exemple, je reçois une erreur en essayant d'accéder à une variable privée (juste assez):Dépannage de save_construct_data lors de la sérialisation d'un pointeur sur une classe sans constructeur par défaut
bs.cpp:10: error: ‘const int my_class::m_attribute’ is private
Mais, si j'ajoute save_construct_data comme ami, je reçois une erreur d'ambiguïté:
/usr/include/boost/serialization/serialization.hpp:148: error: call of overloaded ‘save_construct_data(boost::archive::text_oarchive&, const my_class*&, const boost::serialization::version_type&)’ is ambiguous
/usr/include/boost/serialization/serialization.hpp:83: note: candidates are: void boost::serialization::save_construct_data(Archive&, const T*, unsigned int) [with Archive = boost::archive::text_oarchive, T = my_class]
bs.cpp:10: note: void boost::serialization::save_construct_data(Archive&, const my_class*, unsigned int) [with Archive = boost::archive::text_oarchive]
bs.cpp:29: note: void boost::serialization::save_construct_data(Archive&, const my_class*, unsigned int) [with Archive = boost::archive::text_oarchive]
I peut déplacer la définition de la fonction à la déclaration d'ami, mais c'est juste moche.
Que dois-je essayer après?
Merci, Jayen
Pouvez-vous montrer le code de votre tenter de déclarer 'save_construct_data' comme ami? –
http://pastebin.com/embed_iframe.php?i=d9zBvJag - spécifiquement "template ami void boost :: sérialisation :: save_construct_data (Archive & ar, const ma_classe * t, const unsigned int file_version);" –
Jayen