static cruntimeclass* pascal load(); //遍历整个类型链表,返回符合动态创建的对象。
static cruntimeclass* pfirstclass; //类型链表的头指针
};
一下子往结构里面塞了那么多的东西,大家可以觉得有点头晕。至于cobject* (pascal *m_pfncreateobject)();,这定义函数指针的方法,大家可能有点陌生。函数指针在c++书籍里一般被定为选学章节,但mfc还是经常用到此类的函数,比如我们所熟悉的回调函数。简单地说m_pfncreateobject即是保存了一个函数的地址,它将会创建一个对象。即是说,以后,m_pfncreateobject指向不同的函数,我们就会创建不同类型的对象。
有函数指针,我们要实现一个与原定义参数及返回值都相同一个函数,在mfc中定义为:
static cobject* pascal createobject(){return new xxx};//xxx为类名。类名不同,我们就创建不同的对象。
由此,我们可以如下构造cruntimeclass到链表:
cruntimeclass classxxx={
类名,
……,