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 |
Partager