Bonjour,
Je souhaite utiliser boost::serialize dans un projet mais j'ai des problèmes avec les classe template:
Je dispose d'une classe template de base:
et d'une autre classe template dérivant de cette classe:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 template<class T> class Tclass { friend class boost::serialization::access; template<class Archive> inline void serialize(Archive & ar, const unsigned int version) { ar & BOOST_SERIALIZATION_NVP(m_Value); } public: T m_Value; Tclass(T value) { m_Value = value; } };
Je crée ensuite un élément TclassDeriv<int> dans le main et je le serialise:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 template<class T> class TclassDeriv : public Tclass<T> { friend class boost::serialization::access; template<class Archive> inline void serialize(Archive & ar, const unsigned int version) { ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Tclass<T>); ar & BOOST_SERIALIZATION_NVP(m_Value2); } public: T m_Value2; TclassDeriv(T value1, T value2) : Tclass<T>(value1) { m_Value2 = value2; } };
Le code compile bien et affiche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 #include <boost/archive/xml_woarchive.hpp> // saving #include <boost/archive/xml_wiarchive.hpp> // loading #include <boost/serialization/nvp.hpp> #include <boost/serialization/version.hpp> #include <boost/serialization/base_object.hpp> #include <boost/serialization/export.hpp> #include <boost/serialization/string.hpp> #include <boost/serialization/list.hpp> #include <boost/serialization/vector.hpp> #include <boost/serialization/map.hpp> int main() { Tclass<int> A(25); cout << A.m_Value << endl; TclassDeriv<int> Ad(0,1); cout << Ad.m_Value << endl; cout << Ad.m_Value2 << endl; std::wofstream ofs("C:\\Data\\test.xml"); assert(ofs.good()); boost::archive::xml_woarchive oa(ofs); oa << BOOST_SERIALIZATION_NVP(Ad); return 0; }
25
0
1
mais il plante au moment de serialiser.
Auriez vous une idée de ce qui ne va pas?
Partager