提升序列化问题

时间:2009-06-16 09:06:31

标签: c++ exception templates boost-serialization

我有这样的情况:

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

我想通过boost序列化序列化和反序列化“IData”实例,但它似乎无法正常工作。有没有人这样做过,或者你有任何建议。按照我在VS 2005中使用的方式。

2 个答案:

答案 0 :(得分:3)

请尝试使用BOOST_CLASS_EXPORT_GUID

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

答案 1 :(得分:1)

如果您的类位于命名空间中,请不要忘记添加命名空间:

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