Sérialisation classe template
bonjour,
j'aimerai sérialiser un objet d'une classe template qui dérive d'une classe mère template.
J'ai essayé depuis 5 jours en suivant les instructions dans les différents forums et tutos boost sans succès.
Voici, comment je procède pour la sérialisation (qui ne marche pas):
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| template<class T>
class a
{
public:
a::a() {}
virtual double f(T& x, T& y);
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version);
}
template<class T>
template<class Archive>
void a<T>::serialize(Archive & ar, const unsigned int version)
{
BOOST_SERIALIZATION_ASSUME_ABSTRACT(a);
}
/// classe derivée
template<class T>
class b : public a
{
public:
b::b() {}
virtual double f(T& x, T& y);
private:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int version);
}
template<class T>
template<class Archive>
void b<T>::serialize(Archive & ar, const unsigned int version)
{
typedef a<T> baseClass;
ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(baseClass);
ar & BOOST_SERIALIZATION_NVP(*this);
//ar & boost::serialization::make_nvp("Base", boost::serialization::base_object< a<T> >(*this) ); //ne marche pas
//ar & boost::serialization::base_object< a<T> >(*this);
}
BOOST_CLASS_EXPORT_KEY(b<double>); // ne marche pas
//BOOST_CLASS_EXPORT(b<double>); // ne marche pas
//BOOST_CLASS_EXPORT_GUID(b<double>, "idClasseB"); //ne marche pas |
J'ai une erreur "multiple definition" de classe b. J'ai fait des modifications à plusieurs endroits et testé plusieurs variantes mais ça ne marche pas. Au bout de plusieurs jours, je n'arrive toujours pas à trouver mon erreur.
Merci par avance pour votre aide.