継承機能のレベルの指定

更新 : 2007 年 11 月

ここでは、以下の機能レベルを CObject の派生クラスに追加する方法について説明します。

  • ランタイム クラス情報

  • 動的生成機能のサポートを追加するには

  • シリアル化のサポート

CObject の機能の概要については、「CObject からのクラスの派生」を参照してください。

ランタイム クラス情報を追加するには

  1. CObject からのクラスの派生」の手順で CObject からクラスを派生します。

  2. クラスの宣言で、DECLARE_DYNAMIC マクロを使用します。次に例を示します。

    class CPerson : public CObject 
    {
       DECLARE_DYNAMIC( CPerson )
    
       // other declarations
    };
    
  3. 新規クラスの実装ファイル (.CPP) で IMPLEMENT_DYNAMIC マクロを使用します。このマクロでは、クラスとその基本クラスの名前を引数として使用します。

    IMPLEMENT_DYNAMIC( CPerson, CObject )
    
47ecfxkh.alert_note(ja-jp,VS.90).gifメモ :

IMPLEMENT_DYNAMIC マクロは、必ず新規クラスの実装ファイル (.CPP) に記述します。IMPLEMENT_DYNAMIC マクロがコンパイル中に 2 回以上評価されてはならないので、インターフェイス ファイル (.H) には記述しないでください。.H ファイルは、複数のファイルにインクルードされる可能性があります。

動的生成機能のサポートを追加するには

  1. CObject の派生クラスを作成します。

  2. クラスの宣言に、DECLARE_DYNCREATE マクロを追加します。

  3. 引数を持たないコンストラクタ (既定のコンストラクタ) を定義します。

  4. クラスの実装ファイルに、IMPLEMENT_DYNCREATE マクロを追加します。

シリアル化機能のサポートを追加するには

  1. CObject の派生クラスを作成します。

  2. メンバ関数 Serialize をオーバーライドします。

    47ecfxkh.alert_note(ja-jp,VS.90).gifメモ :

    メンバ関数 Serialize を直接呼び出すとき、つまり、ポリモーフィック ポインタを使わずにオブジェクトをシリアル化するときは、手順 3 から 5 を省略します。

  3. クラスの宣言に、DECLARE_SERIAL マクロを追加します。

  4. 引数を持たないコンストラクタ (既定のコンストラクタ) を定義します。

  5. クラスの実装ファイルに、IMPLEMENT_SERIAL マクロを追加します。

47ecfxkh.alert_note(ja-jp,VS.90).gifメモ :

"ポリモーフィック ポインタ" は、あるクラス (クラス A) のオブジェクト、またはその派生クラス (クラス B) のオブジェクトを指します。ポリモーフィック ポインタを使ってシリアル化する場合は、シリアル化するオブジェクト (B) のランタイム クラスをフレームワークで判定する必要があります。このオブジェクトは基本クラス (A) からの派生クラスのオブジェクトの場合もあるからです。

CObject からの派生クラスでシリアル化する詳細手順については、「MFC のファイル」および「シリアル化」を参照してください。

参照

概念

CObject からのクラスの派生