我正在尝试调试使用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。
感谢您的帮助,对不起我的英语。
答案 0 :(得分:1)
我发现了这个问题。序列化的方法应该称为“序列化”而不是“序列化”。