未调用序列化函数
Serialize function is not called
我正在尝试调试使用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"。
相关文章:
- 如何使用带有非默认构造函数的指针来提升序列化
- g++ 6.3,avx 内联函数上的 Kahan 求和用易失性关键字进行序列化
- 设置使用 Cereal 序列化库时可以在序列化函数中访问的属性
- 使用 boost::序列化代码将 *this 传递给模板函数会产生错误
- 是否可以反序列化(从原始内存块)没有默认构造函数的对象?
- 关于反序列化程序 pop 函数的模板化专用化的歧义
- 使用构造函数作为成员函数的 C++(用于序列化)
- Cereal 找不到任何输出序列化函数
- 用基础和派生类编写虚拟序列化函数
- 崩溃:分段故障:增强序列化加载 - 用null调用构造函数
- 无法在 dlib 中序列化学习的函数
- C++ 促进序列化、构造函数和数据复制
- Boost::序列化 - 如何序列化需要数据分配但没有默认构造函数的数据结构
- Boost序列化程序:除非使用虚拟类析构函数,否则将收到警告C4308
- Boost:在单独的加载/保存函数中非侵入性地序列化类
- C++任意函数反序列化
- 未调用序列化函数
- GPB 序列化到函数的问题
- 写入函数是否在 C++ 中使用 ASCII 序列化对象
- C++析构函数中序列化是一个坏主意,如果是,为什么