我看到MFC实现动态创建对像是记录一张类信息表,以下是在MSDN上找到的动态创建的范例:CRuntimeClass* pRuntimeClass = RUNTIME_CLASS( CMyClass );
CObject* pObject = pRuntimeClass->CreateObject();
ASSERT( pObject->IsKindOf( RUNTIME_CLASS( CMyClass ) ) );
这种创建应该和 CMyClass * pMyObject =new CMyClass();一样的吧 ,只是多了一项类型判断(这是属于动态类型识别吧?),那动态创建体现在什么地方了?
MFC是否支持根据字符串变量动态创建对象??!,具体怎样实现?谢谢!

解决方案 »

  1.   

    1。CRuntimeClass* pRuntimeClass = RUNTIME_CLASS( CMyClass );
    使用RUNTIME_CLASS(class_name)宏返回对应类型的CRuntimeClass指针,MFC中定义如下:
    #define RUNTIME_CLASS(class_name) ((CRuntimeClass*)(&class_name::class##class_name))2。因为CRuntimeClass实际上是一个struct,注意只要是实现了IMPLEMENT_DYNCREATE宏的类,在CRuntimeClass成员中都有对应的CreateObject等函数,而CreateObject实际上是一个对象工厂,它返回一个new出来的对象,这个CObject的派生类对象的具体类型判别是由CRuntimeClass的成员m_lpszClassName决定的,讲到底就是用一个const char[]的字符串来决定所生成的对象是什么类型。
      

  2.   

    MFC是否支持根据字符串变量动态创建对象??!,具体要什么效果?