C ++对象持久性库类似于永恒

时间:2011-01-26 12:39:35

标签: c++ windows serialization object-persistence

我正在寻找一个C ++对象持久性库来替换我一直在进行原型设计的Eternity library大约一天。永恒图书馆很短暂。

我创建了一个与此类似的对象层次结构:

object heirarchy

我有一个std::list ArchiveJob*我希望以XML格式保存和恢复。每个ArchiveJob都有各种子对象,一些在堆栈上分配,一些在堆上。

Eternity在正确保存这些对象方面做得很好,但在恢复它们时失败了。

(对于那些熟悉Eternity的人来说,以下“恢复”操作无法从XML文件中读取任何数据)

xml_read( sequence<pointers>(), *pList, pList->begin(), xml, "ScheduleList" );

此调用为ArchiveJob对象分配了内存,但其所有子代都未初始化。

有人可以推荐一个对象层次结构持久性解决方案:

  1. 可以保留/恢复STL容器
  2. Windows开发人员是否友好(例如,如果需要构建,是否有VS200x解决方案文件)
  3. 可以处理复杂的对象层次结构
  4. 我应该花时间学习XML serialization with boost吗?它如何处理存储在STL容器中的主对象中的复杂对象层次结构?

2 个答案:

答案 0 :(得分:4)

Boost Serialization就是您所需要的:

  1. serializing containers
  2. 尽管它没有VS2008解决方案文件,但它是跨平台和Windows友好的
  3. serializing derived class
  4. [编辑]实际上我错了,它包括VS7.1 solution file

答案 1 :(得分:0)

另一种选择是Google Protocol BuffersIt's not XML based如果您严格遵守XML。由于您需要在外部文件中使用特殊语法,因此它也有点复杂。关于层次结构,您可以阅读this discussion