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