継承機能のレベルの指定
この技術情報では CObject機能に追加する方法を派生クラスの次のレベルについて説明します:
ランタイム クラス情報
動的生成サポート
シリアル化のサポート
CObject の機能の概要については、技術情報 CObject から派生するクラスを作成します。を参照してください。
ランタイム クラス情報を追加するには
CObject から派生するクラスを作成します。 の技術情報 " に説明されているように CObjectからクラスを派生します。
次に示すように、クラス宣言で DECLARE_DYNAMIC マクロを使用する:
class CPerson : public CObject { DECLARE_DYNAMIC( CPerson ) // other declarations };
クラスの実装ファイル (.cpp)で IMPLEMENT_DYNAMIC のマクロを使用します。このマクロは、引数として、次のように、基本クラスとクラスの名前を受け取ります:
IMPLEMENT_DYNAMIC( CPerson, CObject )
[!メモ]
常時は、クラスの実装ファイル (.cpp)に IMPLEMENT_DYNAMIC を配置します。したがって IMPLEMENT_DYNAMIC のマクロは、コンパイル時に一回しか評価し、インターフェイス ファイルに使用することはできません。複数のファイルに含めることができる H)。
動的生成サポートを追加するには
CObjectからクラスを派生します。
クラス宣言で DECLARE_DYNCREATE のマクロを使用します。
引数 (既定のコンストラクター)なしのコンストラクターを定義します。
クラスの実装ファイルで IMPLEMENT_DYNCREATE のマクロを使用します。
シリアル化のサポートを追加するには
CObjectからクラスを派生します。
Serialize のメンバー関数をオーバーライドします。
[!メモ]
Serialize を、つまり直接ダイヤルする場合は、省略して手順 3 ~ 5. をポリモーフィックなポインターを通じてオブジェクトをシリアル化しません。
クラス宣言で DECLARE_SERIAL のマクロを使用します。
引数 (既定のコンストラクター)なしのコンストラクターを定義します。
クラスの実装ファイルで IMPLEMENT_SERIAL のマクロを使用します。
[!メモ]
クラス (呼び出し、 A からのオブジェクトへのポインター 「多形」ポイント派生したクラスのオブジェクトへの)または (A、 B)通知します。ポリモーフィック ポインターを通じてシリアル化するには、フレームワークは、基本クラス (A)から派生したクラスのオブジェクトであるため、 (b)をシリアル化するオブジェクトのランタイム クラスを確認する必要があります。
CObjectからクラスを派生する場合の詳細については、シリアル化を有効にする方法で、技術情報 MFC のファイル と 追加を参照してください。