Bonjour,
J'essaye d'incorporer une fonction de sauvegarde dans une de mes classes à l'aide de la librairie boost::serialize (on me l'a conseillé sur ce forum).
J'ai donc ajouté à ma classe:
Dans mon code principal, je mets:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar, const unsigned int version) { ar & test; } int test
et j'obtiens comme message d'erreur à la compilation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 std::string tempfilename = fileName + ".tmp"; std::ofstream ofs(tempfilename.c_str()); boost::archive::text_oarchive oa(ofs); oa << obj; ofs.close();
J'arrive sur ce code:Error 1 error C2027: use of undefined type 'boost::STATIC_ASSERTION_FAILURE<x>' C:\Boost\include\boost-1_33_1\boost\archive\detail\oserializer.hpp 567
dans oserializer.hpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 template<class Archive, class T> inline void save(Archive & ar, T &t){ // if your program traps here, it indicates taht your doing one of the following: // a) serializing an object of a type marked "track_never" through a pointer. // b) saving an non-const object of a type not markd "track_never) // Either of these conditions may be an indicator of an error usage of the // serialization library and should be double checked. See documentation on // object tracking. BOOST_STATIC_ASSERT(check_tracking<T>::value); save(ar, const_cast<const T &>(t)); }
Il semblerait qu'il ne sache pas comment sauvegarder ma classe!! Pourtant je lui ai rajouté le membre serialize ?
Quel est le problème?
Note: qd je retire ofs << obj de mon code principal, je n'ai plus aucun problème de compilation (normal, il n'essaye plus d'aller chercher serializable qu'il ne trouve certainement pas)
Cordialement,
Rodrigue
Partager