3

継承の一部であるクラスをシリアライズしたい。私は C++98 を使用しており、サードパーティのライブラリは使用していません。これが私のクラス構造です:

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 に答える