c++ - 每次我进行继承时都需要 boost::serialization::base_object 吗?
问题描述
我有:
非多态(无虚方法)类层次结构;
基类已经包含
serialize
;子类直接序列化;
class A { private: int x; int y; template<typename Archive> void serialize(Archive& ar, const unsigned int) { ar & x & y; } }; class B : public A { /* no data members*/ }; class C : public A { /* no data members*/ };
我需要
serialize
在类中使用函数B
吗C
?serialize
在其中发挥作用,B
正是C
这样:template<typename Archive> void serialize(Archive& ar, const unsigned int version) { ar & boost::serialization::base_object<A>(*this); }
我是否应该在文档中对此进行一些注释?
解决方案
不,如果您不想从基础序列化数据,您可能不需要它。
但是,在多态层次结构中,如果只是告诉存档有关已注册类型的信息,您确实需要它。
见https://www.boost.org/doc/libs/1_73_0/libs/serialization/doc/serialization.html
推荐阅读
- r - 遇到条件 if else
- html - 错误的内容类型标头,没有多部分边界
- go - 如何在循环中创建频道?
- javascript - 仅获取具有字体系列的样式属性的值
- java - 引起:java.io.NotSerializableException:org.apache.kafka.clients.producer.KafkaProducer
- google-maps - 中心折线谷歌地图插件颤振适合屏幕谷歌地图
- amazon-web-services - Cloudfront 无法从 http 重定向到 https(从服务器调用时);导致混合内容-
- azure-media-services - 如何在 Azure 媒体服务 V3 中实现字幕?
- json - 使用 Spark Scala 解析 JSON 文件
- python-3.x - 如何检查我在 python 中打开的文件在计算机中的位置?