Повысить проблему сериализации - PullRequest
1 голос
/ 16 июня 2009

у меня такая ситуация:

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>)

Я хочу сериализовать и десериализовать экземпляры "IData" с помощью ускоренной сериализации, но, похоже, это не работает. Кто-нибудь делал это раньше, или у вас есть какие-либо предложения. По тому, как я использую VS 2005.

Ответы [ 2 ]

3 голосов
/ 27 июня 2009

Попробуйте использовать BOOST&#95;CLASS&#95;EXPORT&#95;GUID вместо:

BOOST_CLASS_EXPORT_GUID(ConcreteData<float>, "ConcreteData<float>")
BOOST_CLASS_EXPORT_GUID(ConcreteData<int>, "ConcreteData<int>")
1 голос
/ 29 марта 2012

Если ваш класс живет в пространстве имен, не забудьте добавить пространство имен:

BOOST_CLASS_EXPORT_GUID(NameSpace::ConcreteData<float>, "NameSpace::ConcreteData<float>")
BOOST_CLASS_EXPORT_GUID(NameSpace::ConcreteData<int>, "NameSpace::ConcreteData<int>")
...