动态生成
参考文献:深入浅出MFC-侯捷
开始着手剖析动态生成的实现
有了类别型录网,就可以开始着手解决棘手的动态生成问题。动态生成的困难点在于你没有办法在程序执行期间,根据动态获得的一个类别名称(通常是读档),要求程序产生一个对象。如果我们能够把类别的大小记录在类别型录中,把构造函数(CruntimeClass::CreatObject)也记录在类别型录中,当程序在执行期间获得一个类别名称,它就可以在类别型录中找出对应的元素,然后调用其构造函数(这里所指的并非是C++中的构造函数),产生出对象。
因此可在CRuntimeClass中加以改进下,新的数据结构如下:
因此如果有一下语句,就可以组织成一棵大树
其中凡是m_pfnCreateObject不为NULL者,即可动态生成。图中CFrameWnd和CWnd即可动态生成。
注:其实动态生成技术是为了下文的Serialize技术做铺垫。