【发布时间】:2014-07-23 16:32:31
【问题描述】:
我正在使用 boost 将几个类序列化\反序列化到磁盘。我正在重构许多需要更改类层次结构的类。我希望以下伪代码足以清楚地传达我的情况:
最初的设计类似于以下内容:
class Alpha : public BaseOne, public BaseTwo
{
//member data omitted
void serialize(Archive & ar, const unsigned int version);
}
inline void Alpha::serialize(Archive & ar, const unsigned int version)
{
ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseOne);
ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseTwo);
// also serialize member data
}
class Beta: public Alpha
{
//member data omitted
void serialize(Archive & ar, const unsigned int version);
}
inline void Beta:::serialize(Archive & ar, const unsigned int version)
{
ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Alpha);
// also serialize member data
}
类层次结构已更改为:
class Alpha : public BaseOne
{
void serialize(Archive & ar, const unsigned int version);
}
class Beta: public Alpha, public BaseTwo
{
void serialize(Archive & ar, const unsigned int version);
}
是否可以将使用以前的类层次结构保存的数据反序列化到新设计中?
问候, 约翰
【问题讨论】:
标签: c++ class serialization boost hierarchy