使用虚拟成员从课堂制作 POD

Make POD from class with virtual members

本文关键字:POD 课堂 虚拟成员      更新时间:2023-10-16

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

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::serializations11n等等。