Sérialization, templates et pointeurs
Bonjour, je souhaite sérialiser une classe avec en attribut une liste de pointeurs sur une classe générique
Tout d'abord la classe mère dont dérive la classe générique
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
class Base{
public :
friend class boost::serialization::access;
virtual ~Base(){}
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
}
virtual string Getid() = 0 ;
}; |
la classe générique :
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
|
template<typename T>
class GenericBase : public Base
{
public:
friend class boost::serialization::access;
GenericBase<T>(string id){}
~GenericBase(){}
string id;
vector<T> data
template<class Archive>
void serialize(Archive & ar, const unsigned int version)
{
ar & boost::serialization::base_object<Base>(*this);
ar & BOOST_SERIALIZATION_NVP( id);
ar & BOOST_SERIALIZATION_NVP( data);
}
string Getid() { return id; }
}; |
la classe que je veux sérialiser :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
class Use
{
public:
friend class boost::serialization::access;
int Id;
map<string, Base*> BaseDatas;
Use();
~Use();
}; |
je crois qu'il faut enregistrer auprès des flux output et input chaque GenericBase<T>spécialisé c'est ça ?