未调用序列化函数

Serialize function is not called

本文关键字:函数 序列化 调用      更新时间:2023-10-16

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

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;

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

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

我发现了问题。要序列化的方法应称为"serialize",而不是"serialization"。