IMPLEMENT_DYNCREATE
更新 : 2007 年 11 月
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