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


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