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 : 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
 
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 : 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
 
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?