如何在c++中序列化带有继承的类
How to Serialize classes with inheritance in C++
我想序列化一个属于继承的类。我使用c++ 98,没有第三方库。下面是我的类结构:
class Base{
public:
virtual RunMe()=0;
};
class Derived: public Base{
virtual RunMe(){
std::cout << "I am running << std::endl;
}
};
我能够序列化一个基本类使用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++中序列化结构数据
- 序列化,没有库的整数,得到奇怪的结果
- 如何知道QDataStream不能反序列化某些内容
- 如何使用Python从C++中读取谷物序列化数据
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 带有Protobuf序列化的C++Hazelcast:字符串不是UTF-8格式的
- 自定义对象的dlib序列化在gcc中失败
- C++boost序列化多态性问题
- 增强基于 XML class_id的反序列化
- 提升反序列化对象具有 nan 或 -nan 值
- 在 cpp 中的平面缓冲区中序列化对象
- 每次进行继承时都需要提升::序列化::base_object吗?
- 如何在 c++ 非托管代码中反序列化 byte[] 的 json 字符串?
- 增强多重继承的序列化
- 序列化具有不同成员 MFC c++ 的继承类
- boost::具有不可变抽象基和虚拟继承的序列化
- 使用Boost序列化向前声明类和继承
- 如何对多态继承层次结构执行灵活的序列化
- 继承 std::容器,包括其提升序列化
- 如何在c++中序列化带有继承的类