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


Указание уровни возможностей

В этой статье описывается, как добавлять следующие уровни возможностей в CObject- производного класса.

  • Данные времени выполнения класса

  • Динамическая поддержка создания

  • Поддержка сериализации

Для общего описания функциональности CObject см. в статье Наследование класса от CObject.

Добавление данных времени выполнения класса

  1. Создайте производный класс от CObject, как описано в статье Наследование класса от CObject.

  2. Используйте макрос DECLARE_DYNAMIC в объявлении класса, как показано ниже:

    class CPerson : public CObject 
    {
       DECLARE_DYNAMIC( CPerson )
    
       // other declarations
    };
    
  3. Используйте макрос IMPLEMENT_DYNAMIC в файле реализации (.CPP) класса.Этот макрос принимает в качестве аргументов имя класса и его базового класса следующим образом:

    IMPLEMENT_DYNAMIC( CPerson, CObject )
    
ПримечаниеПримечание

Всегда кладите IMPLEMENT_DYNAMIC в файл реализации (.CPP) для класса.Макрос IMPLEMENT_DYNAMIC должен быть вычисляется только один раз во время компиляции, и, следовательно, не должен использоваться в файле (интерфейса. H), который может быть включен в более чем одном файле.

Добавление динамической поддержки создания

  1. Создайте производный класс от CObject.

  2. Используйте макрос DECLARE_DYNCREATE в объявлении класса.

  3. Определите конструктор без аргументов конструктора (по умолчанию).

  4. Используйте макрос IMPLEMENT_DYNCREATE в файле реализации класса.

Добавление поддержки сериализации

  1. Создайте производный класс от CObject.

  2. Переопределить функцию-член Serialize.

    ПримечаниеПримечание

    При вызове Serialize напрямую, т е не нужно выполнять сериализацию объекта через полиморфный указатель, не разделах 3 до 5.

  3. Используйте макрос DECLARE_SERIAL в объявлении класса.

  4. Определите конструктор без аргументов конструктора (по умолчанию).

  5. Используйте макрос IMPLEMENT_SERIAL в файле реализации класса.

ПримечаниеПримечание

Точки «полиморфный указателя» к объекту класса (вызова его a) или на объект любого класса, производного от " a " (скажите, B).Для сериализации через границы полиморфной указатель, необходимо указать класса среды выполнения объекта они сериализуют (B), поскольку может быть объектом любого класса, производного от определенного базового класса (a).

Дополнительные сведения о том, как включить сериализацию, когда необходимо создать производный класс от CObject см. в разделе статьи файлы в MFC и Сериализация.

См. также

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

Класс, производный от CObject