現在の状態を定期的に (Manager::checkout() が呼び出されたときに) 保存する C++ の datamanager フレームワークを試しています。これは、システム エラー後にアプリケーションを再起動できるようにするシステムの基盤となります。
アイデアは、すべての変数を保持する 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>>
それらのオブジェクトと対話する方法がわかりません (マネージャーは基になる型を知らないため)。タイプを Object の要素として保存することはできません (残念ながら、C++ ではタイプはオブジェクトではありません)。シリアライゼーション部分以外に保存できるものと保存できないものに制限を課さないために、列挙型を使用したくありません。
どのように私はそれを行うことができますか?