Problème de sérialisation Boost
-
05-07-2019 - |
Question
j'ai une situation comme celle-ci:
class IData
{
virtual void get() = 0;
virtual void set() = 0;
}
BOOST_ASSUME_IS_ABSTRACT(IData)
BOOST_EXPORT_CLASS(IData)
template<typename T>
class ConcreteData : public IData
{
public:
protected:
template<typename Archive>
void serialize(Archive& ar, const unsigned version)
{
ar & data;
}
private:
std::vector<T> mData;
}
BOOST_EXPORT_CLASS(ConcreteData<float>)
BOOST_EXPORT_CLASS(ConcreteData<int>)
BOOST_EXPORT_CLASS(ConcreteData<double>)
Je souhaite sérialiser et désérialiser "IData". instances via boost sérialisation mais il semble ne pas fonctionner. Est-ce que quelqu'un a déjà fait cela auparavant ou avez-vous des suggestions.par la façon dont je suis usin VS 2005.
La solution
Essayez d'utiliser BOOST_CLASS_EXPORT_GUID
à la place:
BOOST_CLASS_EXPORT_GUID(ConcreteData<float>, "ConcreteData<float>")
BOOST_CLASS_EXPORT_GUID(ConcreteData<int>, "ConcreteData<int>")
Autres conseils
Si votre classe habite dans un espace de noms, n'oubliez pas d'ajouter l'espace de noms:
BOOST_CLASS_EXPORT_GUID(NameSpace::ConcreteData<float>, "NameSpace::ConcreteData<float>")
BOOST_CLASS_EXPORT_GUID(NameSpace::ConcreteData<int>, "NameSpace::ConcreteData<int>")
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow