在我的应用程序中,我有许多希望能够序列化的类。因此,每个实例需要可序列化的类都具有以下内容:
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive& ar, const unsigned int version)
{
// ar & (all data members)
}
要序列化对象,我需要从类外部使用此代码:
ObjectToSerialize obj;
stringstream ss;
boost::archive::text_oarchive oa(ss);
oa << obj;
这第二段代码让我很烦,因为每次我想序列化一个对象时都必须使用它。有什么方法可以将此代码移动到一个位置并在需要序列化对象时调用它?
我可以用这个方法有一个对象:
string serializeObject(Serializable obj)
但是这样做的问题是没有办法确定哪些对象是“可序列化的”,因为在添加 boost 序列化功能时,没有一个类必须实现的超类型。
那么如何将这段代码放在一个地方,并且只允许将可序列化的对象传递给方法呢?