实现类的注册方法:
ModuleManger.h
1.定义根类IModule,其它类都是继承自它。
2.定义typedef std::map<std::string, IModule*> STRING_MODULE_MAP; 用于存放注册类的指针。
3. #define DECLEAR_MODULE(className) \ //.注册类的申明
class RegisterModule##className \
{\
public: \
RegisterModule##className() \ //类的构造函数
{ \
IModule* pClass=new className; \
pClass-> setName(#className); \
GetModuleFactoryMap()[#className] = pClass; \
} \
}; \
4. #define REGISTER_MODULE(className) \ //注册
static className::RegisterModule##className registerModule##className;
ModuleManger.cpp
STRING_MODULE_MAP& GetModuleFactoryMap()
{
static STRING_MODULE_MAP M_moduleMap; //定义静态的M_moduleMap容器变量,存放注册类
return M_moduleMap;
}
taoke.h
class taoke_proc: public IModule
{
public:
...
DECLEAR_MODULE(taoke_proc) //申明了一个子类
};
taoke.cpp
REGISTER_MODULE(taoke_proc) //定义了静态的子类。会自动调用其构造函数,从而会向静态的M_moduleMap //容器中添加进taoke_proc类。就实现了taoke_proc的注册,可以通 //过M_moduleMap来实现taoke_proc的调用.