当前位置: 移动技术网 > IT编程>开发语言>C/C++ > c++带参工厂模式

c++带参工厂模式

2020年07月29日  | 移动技术网IT编程  | 我要评论
#include<常用>
#include"消息.h"<型名 B,型名...O>构 工厂{
    用 F=函数<独针<B>(O...)>;
    工厂()=;用 T=无序映<,F>;
    静 极 注册(整 标识,F f){&t=();动 p=t.查找(标识);(p==t.()){t[标识]=f;中 真;}
        中 假;
    }

    静 独针<B>产生(整 标识,O...o){&t=();动 p=t.查找(标识);(p!=t.())中 p->第二(o...);中 空针;
    }
    静 T&(){静 T t;中 t;}
};<类 B,类 T,型名...O>构 自动工厂{
    静 常 整 标识;静 常 极 呀;
    静 极 注册(){//每种参数都要注册
        中 工厂<B,O...>::注册(T::标识,[](O...o){中 造独<T>(o...);});
    }
};<类 B,类 T,型名...O>常 极 自动工厂<B,T,O...>::=自动工厂<B,T,O...>::注册();
//这里注册函数.先注册一个,要先注册<类 B,类 T,型名...O>常 整 自动工厂<B,T,O...>::标识=强转<>(&自动工厂<B,T,O...>::);
//通过下面的继承就实现了.这里是标识,求值

构 消息:公 消息基,公 自动工厂<消息基,消息,>{
    整 a;
    消息(整 b):a(b){}foo(){输出<<"消息"<<a<<行尾;}
};//先是基,再是本.如果有多个,还可以注册如:
//构 消息:公 消息基,公 消息基2,公 自动工厂<消息基,消息,整>,公 自动工厂<消息基2,消息,...>{

空 主(){
    动 消息=工厂<消息基,>::产生(消息::标识,2);(消息){消息->foo();}
}


本文地址:https://blog.csdn.net/fqbqrr/article/details/107606541

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网