C++で、現時点生成されている某classのinstance/objectをシリアライズ化してファイルに保存しておきます。
次回アプリケーション再起動する時ファイルから上記シリアライズ化されたclassのinstance/objectをメモリにロードして、
前回設定したパラメータ(class member)を再利用したいし
前回コールしたメソッドも再コール(関数中のstatic変数の値は前回実行時と同じ)したいですが、 実現可能でしょうか。
============
Windows10 Visual stodio15の環境で開発しようとしておりますが、
できるだけMS OSが特有の仕組みややり方を利用しないで実現したいのです。
C++で、class instanceのシリアライズ化に関して
Re: C++で、class instanceのシリアライズ化に関して
MS のC++/CLI(またはC++/CX)を使用すれば”WindowsのOSとしてシリアライズのクラスを実装”しているので容易でしょうが。(サンプルが沢山有るし)。STL(+Boost)を用いて同様なものを実装するのは難しいと思います。(サンプルがあっても高度で完結もしていないようです)
Re: C++で、class instanceのシリアライズ化に関して
「某 class 」が何を保持しているか分からないと何とも答えにくいのですが、アプリケーションが完全に把握できるデータだけであれば十分実現可能なはずです。もし、別のアプリケーションや OS が作成したようなデータ (COM オブジェクトなど) が含まれていると、難しいと思います。
static 変数についても、プログラムの全体が分からないと何とも言えませんが、シリアライズ対象にしたいのであれば、static 変数ではなくクラスのメンバーとして持たせるのが自然だと思います。
自分でシリアライズの処理を実装されるのであれば、std::ostream あたりを使って各クラスのメンバーを書き出すような感じになると思います。私はまだ使ったことがありませんが、boost を使えばもっと楽ができるかもしれません。
Serialization - Tutorial
http://www.boost.org/doc/libs/1_63_0/li ... orial.html
一部でも良いので、シリアライズしたいクラスの定義をこちらに書いていただければ、より具体的なアドバイスが得られると思いますよ。
static 変数についても、プログラムの全体が分からないと何とも言えませんが、シリアライズ対象にしたいのであれば、static 変数ではなくクラスのメンバーとして持たせるのが自然だと思います。
自分でシリアライズの処理を実装されるのであれば、std::ostream あたりを使って各クラスのメンバーを書き出すような感じになると思います。私はまだ使ったことがありませんが、boost を使えばもっと楽ができるかもしれません。
Serialization - Tutorial
http://www.boost.org/doc/libs/1_63_0/li ... orial.html
一部でも良いので、シリアライズしたいクラスの定義をこちらに書いていただければ、より具体的なアドバイスが得られると思いますよ。