VC++6.0、windowsXPにて開発しています。
現在、シリアライズ機能を実装しようとしているのですが、
悪戦苦闘しております。
CXXXDoc内に自動生成されているvoid CXXXDoc::Serialize(CArchive& ar)
を利用すればいいというのは分かっているのですが、
CXXXDocのint型などのメンバ変数は正常にシリアル化できるのですが、
自分で作成したCMyDataクラスのメンバ変数だと正常にシリアル化ができません。
なぜなのでしょうか?
CMyDataクラスにSerializeメソッドを実装しなければならないということなのでしょう
か?
どなたかご教授おねがいします。
ここで聞くよりまずヘルプで「シリアル化」を調べた方が良いです。
MSDNから抜粋
「シリアル化の基本的なしくみは、オブジェクトが自身の現在の状態 (通常はメンバ変
数の値) を自分で 2 次記憶に書き込めるということです。」
つまり、CXXXDocクラスのSerialize機能で他のオブジェクト(CMyData)をシリアル化す
るって事が間違いです。
CMyDataをCObjectの派生クラスにしてSerializeを利用すると良いでしょう。
※他の人も言ってますがMSDNは飛ばさずに読んだ方が良いです。
> CMyDataクラスにSerializeメソッドを実装しなければならない
> ということなのでしょうか?
そうです。
CMyDataクラスのインスタンスがCXXXDocのメンバ変数ならば、
CXXXDoc::Serialize(CArchive& ar) {
...
m_myData.Serialize(ar);
}
等と呼び出しましょう。
http://msdn2.microsoft.com/ja-jp/library/ct517hs4(VS.80).aspx
たいちうさんからのアドバイス通りにすると
無事にシリアライズ機能を実装することができました。
Kerryさん、ともさん、たいちうさん、
本当にどうもありがとうございました。