Bonjour
j'ai toujours des problemes avec la serialization de vector.
je dois serializer des classes auxquelles j'accède via un pointeur sur la classe mere.
je travaille sur un modele de graph routier
par exemple j'ai une classe Graph qui a en attribut un vector<Arc*>, et j'ai entre autres des classes Section et Voie qui héritent de Arc.
Section et Voie contiennent elles meme des vector de différentes choses. ces classes sont rendues serializables via la methode serialize.
dans la methode serialize de Graph, si j'essaye de serializer en faisant une boucle type
1 2
| for (int i = 0; i < vArcs.size(); ++i)
ar & vArcs[i]; |
ça passe bien pour la serialization mais evidemment la deserialization est impossible, on ne recupere pas la taille de vArcs et on ne rentre pas dans la boucle.
donc en theorie je dois faire
et ça ça ne passe pas... cette syntaxe fonctionne bien pour mes classes Section et Voie, mais pas pour Graph...
j'ai une erreur au runtime au moment de l'execution de la ligne ar & vArcs, comme si le systeme ne connaissait pas les classes dérivées, pourtant dans mon main, je fais les export type
BOOST_CLASS_EXPORT_GUID(Section, "Section");
J'ai aussi essayé de splitter serialize en save/load pour serializer le vecteur via une boucle tout en sauvant le taille du vecteur avant, mais je n y arrive pas non plus.
encore une fois, si quelqu'un a une idée... c'est vraiment la derniere chose qui me bloque.
(j'ai bien conscience que mon explication n'est pas très claire, je manque de vocabulaire technique je pense :/ )
Partager