c++ - 使用虚拟成员从类制作 POD

标签 c++ inheritance serialization

我有两个类:Parent 和 Derived。我想实现从二进制文件保存和读取它们或传输它们的能力。请帮助想法或代码片段如何做到这一点。

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 类来保存它并从文件中读取。正确的?为每个 Derived 创建反射的 POD 类似乎不是一个好主意。

最佳答案

这个问题没有直接的答案。你应该使用序列化。 C++ 没有像 Java 或 C# 那样的 native 序列化程序。但是互联网上有很多开源序列化程序。例如 boost::serialization, s11n ,以及许多其他的。

关于c++ - 使用虚拟成员从类制作 POD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37526857/

相关文章:

javascript - jQuery:如何将可排序的 ('serialize' ) 数组从最后一个反转到第一个?

c++ - Qt - 如何将 QString 转换为 char(不是 char*)

C++ template-id 不匹配任何模板?

仅采用从父类(super class)继承的对象的 Java 方法

java - 类继承 : generic extends generic

serialization - 使用 xsd.exe 或 xsd2code 反序列化复杂的 xsd 模式(包含用于继承的替换组元素)

c++ - .NET 编码。wxWIdgets 中的默认替代方案?

c++ - 意外丢失隐式声明的复制/移动构造函数

python - 如何使用继承,我缺少什么?

java - 嵌套对象的 jackson 序列化