合計 昨日 今日

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

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: 渡辺 真理子
[URL]
Date: 2017年3月15日(水) 15:52
No: 1
(OFFLINE)

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

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

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

Name: Math
[URL]
Date: 2017年3月16日(木) 23:56
No: 2
(OFFLINE)

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

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

Name: みえ
[URL]
初心者(8,817 ポイント)
Date: 2017年3月17日(金) 14:17
No: 3
(OFFLINE)

 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

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


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[20人]