1

我即将用Cereal实现我的对象图(实际上是一棵树)的序列化。

Cereal 不支持序列化原始指针(这些指针指向的对象)。我目前的想法是getType()在对象上有一个函数来找出它们的类型,然后根据它们的类型用工厂构造它们。

创建正确的对象后,我们可以使用存档对其进行初始化。

这绝对不是一个理想的解决方案,因为每个类都需要从其getType()函数返回一个唯一类型。

如何改进这种架构?

template <class Archive>
void save( Archive & ar, const unsigned int version ) const
{
    ar << _obj->getType();
    ar << *_obj;
}

template <class Archive>
void load( Archive & ar, const unsigned int version )
{
    ObjType type;
    ar >> type;
    _obj = Factory::createWithType(type);
    _obj->load(ar, version);
}
4

0 回答 0