Je ne suis pas en mesure d'utiliser boost::serialization
car il a des dépendances de bibliothèque donc j'essaie de trouver un moyen de le faire moi-même. Peu importe si cela signifie copier à partir de boost::serialization
. Après avoir lu this answer to a similar question, j'ai jeté un oeil à boost/serialization/variant.hpp et j'ai trouvé save()
fonction qui est simple et compréhensible pour moi.Comment charger un boost :: serial?
Cependant la fonction load()
semble plus compliquée: Il y a une récursion impliquant load()
et variant_impl<types>::load()
et un paramètre which
décrémenté. Donc apparemment le code itère sur chaque type de la variante afin de convertir le int which
en un type. Le reste me dépasse.
Je sais que boost a beaucoup de code pour le rendre portable alors peut-être qu'il y a un moyen moins portable mais plus facile de faire cela?
J'essaie de mettre mes données dans un objet MFC 'CArchive' ... J'ai essayé de supprimer les trucs NVP mais le' CArchive' ne semble pas être un bon ajustement pour tout cela .. – foraidt
@foraidt: 'CArchive' ne fonctionne qu'avec les types qui dérivent de' CObject', ce que 'boost :: variant <>' ne fait clairement pas. – ildjarn
@ildjarn 'CArchive :: operator <<()' est surchargé pour un certain nombre de types (voir http://msdn.microsoft.com/fr-fr/library/331a7zh8%28v=vs.80%29.aspx) . Cela permet de sérialiser beaucoup plus que les classes dérivées de 'CObject'. Mon but est de sérialiser non pas la 'variant' elle-même, mais les données qu'elle contient. – foraidt