我正在寻找一个 C++ 对象持久库来替换永恒图书馆 http://sourceforge.net/projects/eternity-it/我已经用它制作了大约一天的原型。永恒图书馆的能力不足。
我创建了一个与此类似的对象层次结构:
我有一个std::list
of ArchiveJob*
我想以 XML 格式保存和恢复。每个ArchiveJob
有各种子对象,一些分配在堆栈上,一些分配在堆上。
Eternity 在正确持久化这些对象方面做得很好,但在恢复它们时却失败了。
(对于熟悉 Eternity 的人来说,以下“恢复”操作无法从 XML 文件中读取任何数据)
xml_read( sequence<pointers>(), *pList, pList->begin(), xml, "ScheduleList" );
该调用为ArchiveJob
对象,但它的所有子对象都未初始化。
有人可以推荐一个对象层次结构持久性解决方案吗:
- 可以持久化/恢复STL容器
- Windows 开发人员是否友好(例如,如果需要构建,是否有 VS200x 解决方案文件)
- 可以处理复杂的对象层次结构
我应该花时间学习吗使用 boost 进行 XML 序列化 http://www.boost.org/doc/libs/1_43_0/libs/serialization/example/demo_xml.cpp?它如何处理存储在 STL 容器的主对象中的复杂对象层次结构?
增强序列化 http://www.boost.org/doc/libs/1_45_0/libs/serialization/doc/index.html是你所需要的:
- 序列化容器 http://www.boost.org/doc/libs/1_45_0/libs/serialization/doc/index.html
- 尽管它没有 VS2008 解决方案文件,但它是跨平台和 Windows 友好的
- 序列化派生类 http://www.boost.org/doc/libs/1_45_0/libs/serialization/doc/index.html
[编辑]实际上我错了,它包括VS7.1解决方案文件 http://www.boost.org/doc/libs/1_45_0/libs/serialization/doc/index.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)