本文共 2071 字,大约阅读时间需要 6 分钟。
备忘记录下来。
代码是从抠出来的。
引用的另外一篇博客的地址:。但是这篇博客不是最原始地址,原始地址在博客里有描述 “ Published on , by in , ”,不知道URL是什么。
代码如下:
宏定义REGISTER解读:这个宏做了两件事情,第一件事情是声明了一个函数,即 className* objectCreator##className();声明的这个函数,每有一个类需要注册,就会配套着有一个new出待注册类的函数。这些个函数有一致的格式:无参数,返回类型为该类的指针(可以强转为void*)。第二件事情是声明了一个对象,即 RegisterAction g_creatorRegister##className(xxx,yyy);这个RegisterAction构造函数有两个参数,第一个参数string是类的名字,第二个参数PTRCreateObject是一个函数指针,指向上面第一步声明的那个函数。在做第二件事情时,也即RegisterAction的构造函数,会将它的两个参数分别当作key和value,插入到ClassFactory::m_classMap当中,这也就是ClassFactory::getInstance().registClass(className, ptrCreateFn);这句代码的真正用途。当然啦,第二件事情声明的这个对象是位于静态存储区的,它会在main函数之前就被构造出来。
#include
转载地址:http://sbmzb.baihongyu.com/