C++11 模板类自动注册工厂
自动注册工厂CSDN里已经有人解析过了,这里是学习过程中的总结、并详细解析。话不多说,先看代码:
oly_auto_factory.h
下面我们来看具体应用,基类class B
子类 class FirstB; class SecondB ;class ThirdB
类下面的 REGISTER_AF_OBJECT_CLASS(FirstB); 是实现自动注册的关键。当我看到这个REGISTER_AF_OBJECT_CLASS();时一脸懵逼,函数怎么可以在函数体外执行???。
我们来分析一下,大家都知道应用#define 时替换原则,我们替换一下
REGISTER_AF_OBJECT_CLASS(FirstB); ==》 AF_OBJECT::register_t<FirstB> __FirstB('FirstB", ##__VA_ARGS__);
呵,这货就是一个变量。而我们在变量的构造函数里面把他放入std::map<std::string, std::function<T*()>> _map;Map中!

浙公网安备 33010602011771号