IMPLEMENT_DYNCREATE
CObjectオブジェクト-使用時 DECLARE_DYNCREATE マクロと実行時に使用して動的に作成される派生クラスを示します。
IMPLEMENT_DYNCREATE(class_name, base_class_name )
パラメーター
class_name
クラスの実際の名前。base_class_name
基本クラスの実際の名前。
解説
フレームワークは、シリアル化の際にディスクからオブジェクトを読み取ると、新しいオブジェクトなどを動的に作成するこの機能を使用します。 クラスの実装ファイルの IMPLEMENT_DYNCREATE マクロを追加します。 詳細については、「CObject クラスのトピック」を参照してください。
DECLARE_DYNCREATE と IMPLEMENT_DYNCREATE マクロを使用して、RUNTIME_CLASS マクロと実行時にオブジェクトのクラスを決定するために CObject::IsKindOf メンバー関数を使用できます。
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