使用虚拟成员从课堂制作 POD
Make POD from class with virtual members
我有两个类:父级和派生类。我想实现从二进制文件保存和读取它们或传输它们的能力。请帮助想法或代码片段如何做到这一点。
class Parent {
public:
virtual int func1(){ return 1; }
virtual unsigned func2() = 0;
std::string asd;
}
class Derived : public Parent {
public:
unsigned func2(){ return 2; }
bool boo;
}
保存到二进制文件
Parent *obj = new Derived;
write_to_file( obj, sizeof(*obj) );
然后从文件中读取
read_from_file( obj, sizeof(*obj) );
但是此方法将覆盖指向虚函数的指针。所以我需要创建没有虚拟的 POD 类来保存它并从文件中读取。右?为每个派生创建反射的 POD 类似乎不是个好主意。
这个问题
没有直接的答案。应使用序列化。C++没有本机序列化程序,如Java或C#。但是互联网上有很多开源序列化程序。例如boost::serialization
、s11n
等等。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 如何在 malloc 内存中初始化非 POD 数据
- 使用 std::index_sequence 初始化具有固定大小数组成员的 POD 结构容器
- Qt5 远程对象 + 自定义类型,但不在 POD 中
- 带有 char[] 字段的 POD 结构的 constexpr 构造
- 非 POD 的零初始化
- C++定义构造函数使对象成为非 POD
- 是否可以使用 std::array 作为 POD 结构的数据容器?
- 指向 POD 类型的指针之间的静态转换与重新解释转换
- 具有非 POD 对象的 GLib 异步队列
- 约束类模板函数以接受特定的 POD 类型
- 从基本类型转换为非 POD 结构
- 我可以说服自动生成的构造函数将我的 POD 类成员归零吗?
- 根据 MSVC,具有易失性成员的结构不再是 POD
- 快速将无符号字符的向量强制转换为POD结构的向量,反之亦然
- POD类型是否完全等同于琐碎的标准布局类型
- 如何创建非 POD 类型的连续内存池?
- 如何在课堂上重用和重新初始化 c++ discrete_distribution?
- 在课堂上创建了一个朋友,给出"无输入文件"错误
- 使用虚拟成员从课堂制作 POD