boost::serialization
能够序列化它们最派生类的多态对象,即使这些对象由指向基类的引用/指针指向。这不需要虚函数。
要做到这一点,boost::serialization
需要知道存在的多态类型:Archive::register_type
必须在 Archive< 上调用
用于序列化的对象。
This example展示了如何注册类型以及如何序列化它们。
我想知道这是如何实现的。
我试图查看 boost::serialization
源代码但失败了:我不太擅长模板元编程。
最佳答案
boost.serialization
可以使用 typeid()
或一些返回实际类型的用户定义函数 get_key
写出您的多态类的多态对象。
register_type
通过使用提供的类型来实例化一个模板,该模板允许存档映射类型标识符(typeid(T)
或 的结果) T::get_key()
) 到知道如何序列化 T
的对象。
关于c++ - boost::serialization Archive::register_type 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4335539/