注册类(类的注册)

实现类的注册方法:

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的调用.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值