我想序列化一个属于继承的类。我正在使用C ++ 98而没有第三方库。这是我的班级结构:
class Base{
public:
virtual RunMe()=0;
};
class Derived: public Base{
virtual RunMe(){
std::cout << "I am running << std::endl;
}
};
我可以通过朋友技术使用ofstream和fstream序列化基本类。但是,如果我的Base类具有纯虚函数,我无法弄清楚如何实现序列化。
答案 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;
};