繁体   English   中英

使用虚拟成员从班级制作POD

[英]Make POD from class with virtual members

我有两个类: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#。 但是互联网上有很多开源序列化器。 例如boost::serializations11n和许多其他。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM