指定功能级别
本文介绍如何将以下级别的功能添加到 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 中的文件和序列化等文章。