C++ Boost序列化问题
我有这样的情况:C++ Boost序列化问题,c++,exception,templates,boost-serialization,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&
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
{
虚拟void get()=0;
虚空集()=0;
}
假设是抽象的(IData)
增压出口级(IData)
模板
类别数据:公共IData
{
公众:
受保护的:
模板
无效序列化(存档和ar,常量未签名版本)
{
ar&data;
}
私人:
std::向量mData;
}
增强导出类(具体数据)
增强导出类(具体数据)
增强导出类(具体数据)
我想通过boost序列化来序列化和反序列化“IData”实例,但它似乎不起作用。以前有人这样做过吗,或者你有什么建议。顺便问一下,我在VS 2005中使用了。尝试使用
BOOST\u CLASS\u EXPORT\u GUID
:
BOOST_CLASS_EXPORT_GUID(ConcreteData<float>, "ConcreteData<float>")
BOOST_CLASS_EXPORT_GUID(ConcreteData<int>, "ConcreteData<int>")
BOOST\u CLASS\u EXPORT\u GUID(ConcreteData,“ConcreteData”)
BOOST\u CLASS\u EXPORT\u GUID(ConcreteData,“ConcreteData”)
尝试改用BOOST\u CLASS\u EXPORT\u GUID
:
BOOST_CLASS_EXPORT_GUID(ConcreteData<float>, "ConcreteData<float>")
BOOST_CLASS_EXPORT_GUID(ConcreteData<int>, "ConcreteData<int>")
BOOST\u CLASS\u EXPORT\u GUID(ConcreteData,“ConcreteData”)
BOOST\u CLASS\u EXPORT\u GUID(ConcreteData,“ConcreteData”)
如果类位于命名空间中,请不要忘记添加命名空间:
BOOST_CLASS_EXPORT_GUID(NameSpace::ConcreteData<float>, "NameSpace::ConcreteData<float>")
BOOST_CLASS_EXPORT_GUID(NameSpace::ConcreteData<int>, "NameSpace::ConcreteData<int>")
BOOST\u类\u导出\u GUID(命名空间::具体数据,“NameSpace::concreatedata”)
BOOST_CLASS_EXPORT_GUID(名称空间::ConcreteData,“名称空间::ConcreteData”)
如果类位于名称空间中,请不要忘记添加名称空间:
BOOST_CLASS_EXPORT_GUID(NameSpace::ConcreteData<float>, "NameSpace::ConcreteData<float>")
BOOST_CLASS_EXPORT_GUID(NameSpace::ConcreteData<int>, "NameSpace::ConcreteData<int>")
BOOST\u CLASS\u EXPORT\u GUID(名称空间::ConcreteData,“名称空间::ConcreteData”)
BOOST_CLASS_EXPORT_GUID(名称空间::ConcreteData,“名称空间::ConcreteData”)
我们能再看一点代码吗?get()/set()是如何在混凝土中实现的,数据存储在哪里?我们可以看更多的代码吗?get()/set()是如何在混凝土中实现的,数据存储在哪里?