Поделиться через


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)

Требования

Header: afx.h

См. также

Ссылки

DECLARE_DYNCREATE

RUNTIME_CLASS

CObject::IsKindOf

Основные понятия

Макросы и глобальные объекты MFC