掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
IMPLEMENT_SERIALのスキーマ番号について (ID:60805)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
おせわになります。 Serialize関数を保持した、 CAAAクラスとCBBBクラスがあり、 CBBBはCAAAを継承している状況で、 CAAAクラスに新たに変数を追加したいと思っています。 現在、IMPLEMENT_SERIALは以下のようになっていて、 CAAAクラスにあらたに変数を追加するということで CAAAクラスのスキーマ番号を1から2に変更しました。 IMPLEMENT_SERIAL(CAAA , CObject , VERSIONABLE_SCHEMA|2) ←1から2に変更 IMPLEMENT_SERIAL(CBBB , CAAA , VERSIONABLE_SCHEMA|1) 変更後、以下のCBBBクラスのシリアル化処理の中の、 CAAAクラスのSerialize関数内で スキーマ番号をGetObjectSchema関数で取得すると 「1」となります。 //##### CAAAクラスのシリアル化 ##### void CAAA::Serialize(CArchive& ar) { if(ar.IsStoring()){ ar << m_intA << m_intB << m_intC } else{ int Ver = ar.GetObjectSchema(); ar >> m_intA >> m_intB >> m_intC if(Ver >= 2) { ar >> m_intD; } } //##### CBBBクラスのシリアル化 ##### void CBBB::Serialize(CArchive& ar) { CAAA::Serialize(ar); if(ar.IsStoring()){ ar << m_dblA } else{ ar >> m_dblA } } このケースで、 CAAAクラスのデータを追加したい場合、 やはり、CBBBクラスのスキーマ番号も1から2に変更しないと いけないのでしょうか? よろしくおねがいします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.