シリアライズ機能の実装 – プログラミング – Home

シリアライズ機能の実装
 
通知
すべてクリア

[解決済] シリアライズ機能の実装


切原
 切原
(@切原)
ゲスト
結合: 18年前
投稿: 6
Topic starter  

VC++6.0、windowsXPにて開発しています。

現在、シリアライズ機能を実装しようとしているのですが、
悪戦苦闘しております。

CXXXDoc内に自動生成されているvoid CXXXDoc::Serialize(CArchive& ar)
を利用すればいいというのは分かっているのですが、

CXXXDocのint型などのメンバ変数は正常にシリアル化できるのですが、
自分で作成したCMyDataクラスのメンバ変数だと正常にシリアル化ができません。

なぜなのでしょうか?
CMyDataクラスにSerializeメソッドを実装しなければならないということなのでしょう
か?

どなたかご教授おねがいします。


引用未解決
トピックタグ
Kerry
 Kerry
(@Kerry)
ゲスト
結合: 20年前
投稿: 192
 

ここで聞くよりまずヘルプで「シリアル化」を調べた方が良いです。


返信引用
とも
 とも
(@とも)
ゲスト
結合: 23年前
投稿: 65
 

MSDNから抜粋
「シリアル化の基本的なしくみは、オブジェクトが自身の現在の状態 (通常はメンバ変
数の値) を自分で 2 次記憶に書き込めるということです。」
つまり、CXXXDocクラスのSerialize機能で他のオブジェクト(CMyData)をシリアル化す
るって事が間違いです。
CMyDataをCObjectの派生クラスにしてSerializeを利用すると良いでしょう。
※他の人も言ってますがMSDNは飛ばさずに読んだ方が良いです。


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> CMyDataクラスにSerializeメソッドを実装しなければならない
> ということなのでしょうか?

そうです。
CMyDataクラスのインスタンスがCXXXDocのメンバ変数ならば、

CXXXDoc::Serialize(CArchive& ar) {
...
m_myData.Serialize(ar);
}

等と呼び出しましょう。

http://msdn2.microsoft.com/ja-jp/library/ct517hs4(VS.80).aspx


返信引用
切原
 切原
(@切原)
ゲスト
結合: 18年前
投稿: 6
Topic starter  

たいちうさんからのアドバイス通りにすると
無事にシリアライズ機能を実装することができました。

Kerryさん、ともさん、たいちうさん、
本当にどうもありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました