C++ 使用boost序列化序列化而不更改类
每次我们创建一个类,即从C++ 使用boost序列化序列化而不更改类,c++,boost,C++,Boost,每次我们创建一个类,即从template到ar&BOOST\u SERIALIZATION\u NVP(b),都必须编写这段代码。我们怎样才能把它缩短? 我们如何序列化stl容器 class Employee { private: friend class boost::serialization::access; template<class Archive> void serialize(Archive & ar,
template
到ar
&BOOST\u SERIALIZATION\u NVP(b)
,都必须编写这段代码。我们怎样才能把它缩短?
我们如何序列化stl容器
class Employee
{
private:
friend class boost::serialization::access;
template<class Archive> void serialize(Archive & ar,
const unsigned int version)
{
ar & BOOST_SERIALIZATION_NVP(a);
ar & BOOST_SERIALIZATION_NVP(b);
}
int a;
int b;
public:
Employee(int a, int b)
{
this->a = a;
this->b = b;
}
};
class员工
{
私人:
好友类boost::serialization::access;
模板无效序列化(存档和应收账款),
常量(无符号整数版本)
{
ar&BOOST_序列化_NVP(a);
ar&BOOST\U序列化\U NVP(b);
}
INTA;
int b;
公众:
雇员(内部a、内部b)
{
这->a=a;
这->b=b;
}
};
我建议您从文档开始:)
- (从可序列化概念开始)
#include <boost/serialization/map.hpp>
#include <boost/serialization/string.hpp>
#包括
#包括
许多其他东西都是开箱即用的
您可以为已经通过其他方式(例如,融合序列、Qt QObject等)变得“可反射”的类型制作通用包装。这可能是重复的,我知道我们有头文件要包含在其中,但它们实际上是如何在它们之间链接的,也就是说,它们显然不会改变std::vector头中的代码。所以他们实际上是如何在boost序列化和vector头之间创建链接的,即boost/serialization/vector.hpp?????@shivi我不知道你想知道什么,这在示例中没有涉及。也许你可以找到一个更直接的例子。只需包含头,OP的代码就可以编译。也许您想知道
serialize()
如何知道它正在处理向量?这就是简单的重载解析:foo(int);模板foo(std::vector const&)
将自动调用foo(42)
vs.foo(myu向量)