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


Задание уровней функциональности

В этой статье описывается, как добавлять следующие слои функциональности в 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