C++で、class instanceのシリアライズ化に関して

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
渡辺 真理子

C++で、class instanceのシリアライズ化に関して

#1

投稿記事 by 渡辺 真理子 » 1年前

C++で、現時点生成されている某classのinstance/objectをシリアライズ化してファイルに保存しておきます。

次回アプリケーション再起動する時ファイルから上記シリアライズ化されたclassのinstance/objectをメモリにロードして、
前回設定したパラメータ(class member)を再利用したいし
前回コールしたメソッドも再コール(関数中のstatic変数の値は前回実行時と同じ)したいですが、 実現可能でしょうか。
============
Windows10 Visual stodio15の環境で開発しようとしておりますが、
できるだけMS OSが特有の仕組みややり方を利用しないで実現したいのです。

Math

Re: C++で、class instanceのシリアライズ化に関して

#2

投稿記事 by Math » 1年前

MS のC++/CLI(またはC++/CX)を使用すれば”WindowsのOSとしてシリアライズのクラスを実装”しているので容易でしょうが。(サンプルが沢山有るし)。STL(+Boost)を用いて同様なものを実装するのは難しいと思います。(サンプルがあっても高度で完結もしていないようです)

みえ
記事: 23
登録日時: 1年前

Re: C++で、class instanceのシリアライズ化に関して

#3

投稿記事 by みえ » 1年前

「某 class 」が何を保持しているか分からないと何とも答えにくいのですが、アプリケーションが完全に把握できるデータだけであれば十分実現可能なはずです。もし、別のアプリケーションや OS が作成したようなデータ (COM オブジェクトなど) が含まれていると、難しいと思います。

static 変数についても、プログラムの全体が分からないと何とも言えませんが、シリアライズ対象にしたいのであれば、static 変数ではなくクラスのメンバーとして持たせるのが自然だと思います。

自分でシリアライズの処理を実装されるのであれば、std::ostream あたりを使って各クラスのメンバーを書き出すような感じになると思います。私はまだ使ったことがありませんが、boost を使えばもっと楽ができるかもしれません。

Serialization - Tutorial
http://www.boost.org/doc/libs/1_63_0/li ... orial.html

一部でも良いので、シリアライズしたいクラスの定義をこちらに書いていただければ、より具体的なアドバイスが得られると思いますよ。

返信

“C言語何でも質問掲示板” へ戻る