我正在 C++ 中尝试一个 datamanager 框架,它会定期(当 Manager::checkout() 被调用时)保存当前状态。这将是系统的基础,允许应用程序在系统错误后重新启动。
这个想法是有一个名为 Manager 的单例类,它将包含所有变量,用户可以通过执行以下操作简单地创建一个新的托管变量
int& i = Manager::get().make<int>("variable_id");
double& e = Manager::get().make<double>("other_variable_id");
我的问题是如何从经理的角度管理变量。
我的第一个想法是构建一个由变量类型模板化的对象类,该变量类型将保存变量以及用于序列化/管理变量的方法。
如果我有很多这些
Object<char>, Object<double>, Object<std::vector<int>>
全部投到
Object<void>
并存储在
std::map<std::string, Object<void>>
我不知道如何与这些对象交互(因为 Manager 不知道底层类型)。我不能将类型存储为 Object 的元素(遗憾的是,类型不是 C++ 中的对象),并且我不想使用枚举,以免对除了序列化部分之外可以存储和不能存储的内容施加限制。
知道我该怎么做吗?