次の方法で共有


IMPLEMENT_DYNCREATE

DECLARE_DYNCREATE マクロと同時に使用して、CObject 派生クラスのオブジェクトを実行時に動的に作成できるようにします。

IMPLEMENT_DYNCREATE(class_name, base_class_name )

パラメーター

  • class_name
    実際のクラス名。

  • base_class_name
    基本クラスの実際の名前。

解説

たとえば、フレームワークは、シリアル化時にディスクからオブジェクトを読み込むときに、この機能を使用して新しいオブジェクトを動的に作成します。 クラスの実装ファイルに IMPLEMENT_DYNCREATE マクロを追加してください。 詳細については、「CObject の使い方」を参照してください。

DECLARE_DYNCREATE マクロと IMPLEMENT_DYNCREATE マクロを使うと、CObject::IsKindOf メンバー関数や RUNTIME_CLASS マクロを使って実行時にオブジェクトのクラスを調べることができます。

クラスの宣言に DECLARE_DYNCREATE マクロが含まれている場合は、クラスの実装に IMPLEMENT_DYNCREATE マクロを含める必要があります。

このマクロ定義では、クラスの既定のコンストラクターが呼び出されます。 特別な処理を行うコンストラクターをクラスに対して明示的に実装している場合は、既定のコンストラクターも明示的に実装する必要があります。 クラスの private メンバー セクションまたは protected メンバー セクションに追加することで、そのクラスの外部からは、既定のコンストラクターを呼び出せないようにすることができます。

使用例

class CMyDynCreateObj : public CObject
{
     int m_Num;
public:
     DECLARE_DYNCREATE(CMyDynCreateObj)
     CMyDynCreateObj(int Num) { m_Num = Num; }
private:
     CMyDynCreateObj() { m_Num = 0; }  // provide default constructor only for 
                                       // dynamic creation 
};
IMPLEMENT_DYNCREATE(CMyDynCreateObj, CObject)

必要条件

**ヘッダー:**afx.h

参照

参照

DECLARE_DYNCREATE

RUNTIME_CLASS

CObject::IsKindOf

概念

MFC マクロとグローバル