类似于eternity的C++对象持久化库

标签 c++ windows serialization object-persistence

我正在寻找一个 C++ 对象持久性库来替换 Eternity library我已经用它制作了大约一天的原型(prototype)。永恒图书馆出现了短缺。

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

object heirarchy

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

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

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

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

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

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

  1. 可以持久化/恢复STL容器
  2. Windows 开发人员是否友好(例如,如果需要构建,是否有 VS200x 解决方案文件)
  3. 可以处理复杂的对象层次结构

我应该花时间学习XML serialization with boost ?它如何处理存储在 STL 容器的主对象中的复杂对象层次结构?

最佳答案

Boost Serialization是您所需要的:

  1. serializing containers
  2. 尽管它没有 VS2008 解决方案文件,但它是跨平台且 Windows 友好的
  3. serializing derived class

[编辑]其实我错了,它包括 VS7.1 solution file

关于类似于eternity的C++对象持久化库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4804653/

相关文章:

python - Tkinter 窗口在嵌入式 python 中无响应

java - 为什么 Java 在 Exception 和 Throwable 类中声明 serialVersionUID?

c++ - 解释这个闰年函数C++

c++ - 在这种情况下,我可以避免带有主体的纯虚函数吗

带有 system.drawing 和可能替代方案的 WIndows 通用应用程序

Windows Workflow Foundation 4.0 选择包含延迟事件的事件

c# - 在不破坏 C# 序列化的情况下将类重构为接口(interface)

java - Jersey/Jackson 仅基类序列化问题

C++ 序列点和 C++17 中求值顺序的变化

c++ - 通过 C++ 模板元编程从数组名称推导数组维度