implement_dyncreate
使用DECLARE——DYNCREATE宏时,使能Cobject派生类的对象在运行时动态被创建。
implement_dyncreate(class_name, base_class_name ) |
class_name
派生类名.
base_class_name
基类名.
Remarks
框架使用这种技巧动态的创建新的对象。如,序列化时,从盘中读一个对象。在类实现的文件中添加宏IMPLEMENT_DYNCREATE. For more information, see CObject Class topics.
如果你使用了declare_dyncreate 和 IMPLEMENT_DYNCREATE 宏, 你可以使用runtime_CLASS 宏和 CObject::IsKindOf 成员函数去决定是否在运行时中创建宏.
如果类声明的文件中包含有DECLARE_DYNCREATE, 类实现的文件中必须有 IMPLEMENT_DYNCREATE.
/* CAge.h */ class CAge : public CObject { int num; public: DECLARE_DYNCREATE(CAge) }; //============== /* CAge.cpp */ #include "stdafx.h" #include "CAge.h" IMPLEMENT_DYNCREATE(CAge, CObject) CObject 成员函数 IsKindOf 可用于确定具体某个对象是属于特定类还是从特定类派生。IsKindOf 的参数是 CRuntimeClass 对象,使用带类名的 RUNTIME_CLASS 宏可获取该参数。
很少需要直接访问运行时类对象。更常用的方法是将运行时类对象传递到 IsKindOf 函数,如下一过程所示。IsKindOf 函数测试对象,确定对象是否属于特定类。
|