指定功能级别
本文介绍如何添加以下级别功能以 CObject派生类:
运行时类的信息
动态创建支持
序列化支持
有关 CObject 函数的概述,请参阅文章 从派生类 CObject。
添加运行时类信息
从 CObject派生类,如 从派生类 CObject 文章所述。
类声明使用 DECLARE_DYNAMIC 宏,如下所示:
class CPerson : public CObject { DECLARE_DYNAMIC( CPerson ) // other declarations };
实现文件 (.cpp) 类使用 IMPLEMENT_DYNAMIC 宏。 此宏将用作参数类及其基类的名称,如下所示:
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 中的文件 序列化。