我正在寻找一个C ++对象持久性库来替换我一直在进行原型设计的Eternity library大约一天。永恒图书馆很短暂。
我创建了一个与此类似的对象层次结构:
我有一个std::list
ArchiveJob*
我希望以XML格式保存和恢复。每个ArchiveJob
都有各种子对象,一些在堆栈上分配,一些在堆上。
Eternity在正确保存这些对象方面做得很好,但在恢复它们时失败了。
(对于那些熟悉Eternity的人来说,以下“恢复”操作无法从XML文件中读取任何数据)
xml_read( sequence<pointers>(), *pList, pList->begin(), xml, "ScheduleList" );
此调用为ArchiveJob
对象分配了内存,但其所有子代都未初始化。
有人可以推荐一个对象层次结构持久性解决方案:
我应该花时间学习XML serialization with boost吗?它如何处理存储在STL容器中的主对象中的复杂对象层次结构?
答案 0 :(得分:4)
Boost Serialization就是您所需要的:
[编辑]实际上我错了,它包括VS7.1 solution file
答案 1 :(得分:0)
另一种选择是Google Protocol Buffers。 It's not XML based如果您严格遵守XML。由于您需要在外部文件中使用特殊语法,因此它也有点复杂。关于层次结构,您可以阅读this discussion