2009-06-16 8 views
1

i ont ce genre de situation:problème de sérialisation Boost

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 veux sérialisation et la désérialisation instances "iData" via sérialisation boost mais il semble ne fonctionne pas. Quelqu'un at-il fait cela avant ou avez-vous des suggestions.by la façon dont je suis usin VS 2005.

+0

pourrions-nous voir un peu plus de code? comment get()/set() est implémenté dans le béton, où sont stockées les données? – Pieter

Répondre

3

Essayez d'utiliser à la place BOOST_CLASS_EXPORT_GUID:

BOOST_CLASS_EXPORT_GUID(ConcreteData<float>, "ConcreteData<float>") 
BOOST_CLASS_EXPORT_GUID(ConcreteData<int>, "ConcreteData<int>")
+0

merci qui a fonctionné. – Qubeuc

1

Dans le cas où votre vie de classe dans un espace de noms, ne pas oublier pour 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>") 
Questions connexes