如何序列化和反序列化包含c ++中抽象对象容器的对象?

时间:2009-07-13 20:01:02

标签: c++

我试图在c ++中对包含抽象对象容器的对象进行文本序列化和反序列化,有人知道上面的代码示例吗?

4 个答案:

答案 0 :(得分:3)

看看boost::serialize

它包含协助serialization of containers的方法(左侧链接丢失)。

当然,不要只是跳到那个页面,你会想要阅读整个内容。 :)

答案 1 :(得分:2)

与其他语言不同,C ++并没有“烘焙”这种序列化。你想要使用一个库。例如Boost.SerializationGoogle Protocol Buffers(可以是文件格式)或Apache Thrift

答案 2 :(得分:1)

您可以为您的抽象类创建一个名为:

的方法
virtual void serialize(char *out, int outLen) = 0;

..反过来又是一个静态反序列化器:

AbstractClass deserialize(char *serializedString, int strLen);

在你的反序列化器中,你可以有不同的策略来反序列化抽象类的正确子类。

答案 3 :(得分:1)

嘿,我回答了一个类似的问题。看看dribeas的回答特别好。这种方法允许添加抽象类型的新对象几乎不会对现有代码进行操作(即,我们可以序列化它们,而无需在我们的反序列化器中添加额外的开关/ else)。

Best Practice For List of Polymorphic Objects in C++