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

时间:2013-01-11 20:22:41

标签: c++ linux serialization

我想序列化一个属于继承的类。我正在使用C ++ 98而没有第三方库。这是我的班级结构:

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

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

我可以通过朋友技术使用ofstream和fstream序列化基本类。但是,如果我的Base类具有纯虚函数,我无法弄清楚如何实现序列化。

1 个答案:

答案 0 :(得分:1)

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

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;
};