gpt4 book ai didi

c++ - 每次继承时都需要boost::serialization::base_object吗?

转载 作者:行者123 更新时间:2023-12-01 14:52:09 27 4
gpt4 key购买 nike

我有:

  • 非多态(无虚拟方法)类层次结构;
  • 基类已经包含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*/ };
  • 是否需要在serializeB类中使用C函数?serializeB中的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
    请参见此处的许多示例:https://stackoverflow.com/a/35756430/85371

    关于c++ - 每次继承时都需要boost::serialization::base_object吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62662679/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com