Указание уровни возможностей
В этой статье описывается, как добавлять следующие уровни возможностей в CObject- производного класса.
Данные времени выполнения класса
Динамическая поддержка создания
Поддержка сериализации
Для общего описания функциональности CObject см. в статье Наследование класса от CObject.
Добавление данных времени выполнения класса
Создайте производный класс от CObject, как описано в статье Наследование класса от CObject.
Используйте макрос DECLARE_DYNAMIC в объявлении класса, как показано ниже:
class CPerson : public CObject { DECLARE_DYNAMIC( CPerson ) // other declarations };
Используйте макрос IMPLEMENT_DYNAMIC в файле реализации (.CPP) класса.Этот макрос принимает в качестве аргументов имя класса и его базового класса следующим образом:
IMPLEMENT_DYNAMIC( CPerson, CObject )
Примечание |
---|
Всегда кладите IMPLEMENT_DYNAMIC в файл реализации (.CPP) для класса.Макрос IMPLEMENT_DYNAMIC должен быть вычисляется только один раз во время компиляции, и, следовательно, не должен использоваться в файле (интерфейса. H), который может быть включен в более чем одном файле. |
Добавление динамической поддержки создания
Создайте производный класс от CObject.
Используйте макрос DECLARE_DYNCREATE в объявлении класса.
Определите конструктор без аргументов конструктора (по умолчанию).
Используйте макрос IMPLEMENT_DYNCREATE в файле реализации класса.
Добавление поддержки сериализации
Создайте производный класс от CObject.
Переопределить функцию-член Serialize.
Примечание При вызове Serialize напрямую, т е не нужно выполнять сериализацию объекта через полиморфный указатель, не разделах 3 до 5.
Используйте макрос DECLARE_SERIAL в объявлении класса.
Определите конструктор без аргументов конструктора (по умолчанию).
Используйте макрос IMPLEMENT_SERIAL в файле реализации класса.
Примечание |
---|
Точки «полиморфный указателя» к объекту класса (вызова его a) или на объект любого класса, производного от " a " (скажите, B).Для сериализации через границы полиморфной указатель, необходимо указать класса среды выполнения объекта они сериализуют (B), поскольку может быть объектом любого класса, производного от определенного базового класса (a). |
Дополнительные сведения о том, как включить сериализацию, когда необходимо создать производный класс от CObject см. в разделе статьи файлы в MFC и Сериализация.