我在C ++中有一堆结构。我想将它保存到文件并再次加载它们。问题是我的一些结构是基类(/结构)的指针。所以我需要一种方法来找出类型并创建它。它们真的只是POD,它们都有公共成员而没有构造函数。
从文件中保存和加载它们的最简单方法是什么?我有很多结构,我使用的唯一类型是整数,指针或c字符串。我想我可以做一些宏观黑客攻击。但我真的不知道该怎么做。
答案 0 :(得分:4)
您是否尝试过Boost serialization库?
答案 1 :(得分:2)
不要在这里自己动手 - 使用经过深思熟虑和测试的东西。一个想法是Protocol Buffers
答案 2 :(得分:0)
指针提出了一个特定问题:我认为多个struct实际上可能引用相同的指针,并且你希望在反序列化时重新创建一个指针...
避免样板代码的第一个想法是创建一个编译时反射工具:
这两个宏会在你的struct上生成一些邪恶的信息,这样你就可以将它们与Fusion算法一起使用,这些算法跨越了编译时和运行时之间的差距。
现在,您需要一些能够序列化和反序列化数据的东西。反序列化通常有点困难,尽管在这里你没有多态性的优势(这总是让事情变得困难)。
通常,在第一遍中,您标识要序列化的对象的图形,为它们分配所有ID,并在序列化时使用此ID代替指针。对于反序列化,使用3列映射:
当然,最好让框架为您处理它。您可以尝试s11n,如果我没记错,它会处理引用的循环。