Boost serialize xml et class template
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:
Code:
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; }
}; |
et d'une autre classe template dérivant de cette classe:
Code:
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; }
}; |
Je crée ensuite un élément TclassDeriv<int> dans le main et je le serialise:
Code:
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;
} |
Le code compile bien et affiche:
25
0
1
mais il plante au moment de serialiser.
Auriez vous une idée de ce qui ne va pas?