c++ - Boost序列化问题

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

我想通过提升序列化来序列化和反序列化“IData”实例,但它似乎不起作用。有没有人以前做过这个或者你有什么建议。顺便说一句,我正在使用 VS 2005。

最佳答案

尝试使用 BOOST_CLASS_EXPORT_GUID 代替:

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

关于c++ - Boost序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1000343/

相关文章:

c# - 将 WPF 应用程序迁移到 dotnet Core 3 后获取 TaskCancelledException

c++ - 通过 C++ 中的包装器将参数列表传递给构造函数

c++ - basic_string<CharT> 与 CharT*

c++ - atof() 可以根据不同的机器编译器/库(x86-64)产生不同的结果

c++ - 对位集进行位运算的性能

c++ - 传递将模板参数作为参数默认为 NULL 的 boost::function

c++ - 具有定义的友元函数 - 模板还是非模板?

c++ - gstreamer 的音乐可视化错误

c# - 集合被修改;枚举操作不能在 ArrayList 中执行

java - catch 语句内的对象创建