3

我想序列化一个作为继承一部分的类。我正在使用 C++98 并且没有第 3 方库。这是我的班级结构:

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

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

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

4

1 回答 1

2

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

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;
};
于 2013-01-11T20:32:26.393 回答