不调用Serialize函数

时间:2015-03-03 10:15:18

标签: c++ serialization boost

我正在尝试调试使用Boost序列化实现的保存/加载功能,但它不起作用。我发现问题是由类tile引起的:

class tile : public game_object {
...
friend class boost::serialization::access;
template <class Archive>
void serialization(Archive ar &, const unsigned int version) 
{
    throw new std::exception;    //I expect this will be thrown when serializing, but it isn't
    ar & boost::serialization::base_object<game_object>(*this);
    ...
}

保存到存档:

boost::archive::text_oarchive archive(...);
tile t = ...;
archive << t;

从存档加载:

boost::archive::text_iarchive archive(...);
tile t;
archive >> t;

问题是,不会保存和加载类class中不属于类game_object的数据成员。从不调用函数tile :: serialize,但调用函数game_object :: serialize。

感谢您的帮助,对不起我的英语。

1 个答案:

答案 0 :(得分:1)

我发现了这个问题。序列化的方法应该称为“序列化”而不是“序列化”。