c++ - 如何在 C++ 中使用继承序列化类

标签 c++ linux serialization

我想序列化一个属于继承的类。我使用的是 C++98,没有第 3 方库。这是我的类结构:

class Base{
public:
    virtual RunMe()=0;
};

class Derived: public Base{
    virtual RunMe(){
        std::cout << "I am running << std::endl;
    }
};

我能够通过 friend 技术使用 ofstream 和 fstream 序列化一个基本类。但是我不知道如何在我的基类具有纯虚函数的情况下实现序列化。

最佳答案

将序列化支持方法添加到您的基类。
您的子类将首先调用基类支持方法,然后调用它们自己的方法。

class Base
{
  public:
    virtual void binary_write(ostream& out) // Serialization support function.
    {
        out.write(&m_base_variable, sizeof(m_base_variable));
    }
  private:
    unsigned int m_base_variable;
};


class Derived
: public Base
{
  public:
    virtual void binary_write(ostream& out) // Serialization support function
    {
        Base::binary_write(out); // Call Base's method first;
        out.write(m_derived_variable, sizeof(m_derived_variable));
    }
  private:
    double m_derived_variable;
};

关于c++ - 如何在 C++ 中使用继承序列化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14286055/

相关文章:

c++ - 是否可以简单地序列化 C++ 对象

c++ - Botan AutoSeeded_RNG无法初始化,引用未知,尽管库已正确链接

c++ - 将格式化的 mac 地址写入 stringstream

linux - 我如何开始制作我自己的简单的基于 UNIX 的网络扫描仪?

python - 使用我自己的 python 脚本对我的计算机进行身份验证

linux - 我如何通过使用 grep 和 find 命令替换字符串来更新文件的内容

c++ - 使用 cuda 7.0 RC 中的 cusolver 进行特征值和特征向量计算

c++ - 在类成员中正确使用 unique_ptr

.net - 有效的自定义 azure 表存储实体序列化?

java - Gson 忽略映射中键的自定义序列化器