追根究底,MFC六大关键技术剖析(第三部分)[5]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 liyi268 的 blog

即是说,我们类说明中使用declare_dyncreateclassnmae)宏和在类的实现文件中使用implement_dyncreateclassnamebaseclass)宏来为我们加入链表,至于这两个宏怎么为我们建立一个链表,我们自己可以玩玩文字代换的游戏,在此不一一累赘。但要说明的一点就是:动态创建宏xxx_dyncreate包含了rtti宏,即是说, xxx_dyncreatexxx_dynamic的“增强版”。

到此,我们有必要了解一下上节课没有明讲的m_pnextclass指针。因为mfc层次结构是树状的,并不是直线的。如果我们只有一个m_pbaseclass指针,它只会沿着基类上去,会漏掉其它分支。在动态创建时,必需要检查整个链表,看有多少个要动态创建的对象,即是说要从表头(pfirstclass)开始一直遍历到表尾(m_pnextclass=null),不能漏掉一个cruntimeclass对象。

所以每当有一个新的链表元素要加入链表的时候,我们要做的就是使新的链表元素成为表头,并且m_pnextclass指向原来链表的表头,即像下面那样(当然,这些不需要我们操心,是rtti宏帮助我们完成的):

本文关键:追根究底,MFC六大关键技术剖析(第三部分)
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top