mangos 学习笔记之一 ------ 模板技术使用

 

   mangos 代码大量用到模板,而且用的很灵活,现阶段先把模板看一下,理解一下mangos的模板设计思路。

   首先什么是模板,其实就是为了实现代码的复用,基本上是实现逻辑代码的复用。通过将类型作为参数传入函数模板和类模板,不同的类型,实现逻辑算法的复用,类型的范围很广,可以是标准类,自定义类,基本类型。(模板中的迭代器下章再论)

           在mangos的就通过将类作为模板类型传入模板类中,实现回调函数在类中的实现:

//类型默认值设置,使类型的传递个数比较灵活。

template < class Class,

typename ParamType1 = void,

typename ParamType2 = void,

typename ParamType3 = void,

typename ParamType4 = void >
    class _Callback
    {
        protected:

            //回调函数指针定义
            typedef void (Class::*Method)(ParamType1, ParamType2, ParamType3, ParamType4);
            Class *m_object;

            //类中回调函数指针声明
            Method m_method;
            ParamType1 m_param1;
            ParamType2 m_param2;
            ParamType3 m_param3;
            ParamType4 m_param4;

            //通过函数指针和类实例指针,调用传入的类实例的函数实现回调函数

            //怎样就可以将类的类型和类中函数的函数名都推迟到调用的时候才确定,充分赋予该类的灵活性。
            void _Execute()

 {

         (m_object->*m_method)(m_param1, m_param2, m_param3, m_param4);

}
        public:
   //参数按照类里面变量定义顺序传入和赋值
   //bug: 最好在初始化函数里面进行,因为构造函数没有返回值,无法判断是否传入有效。

  // object 指针传入类实例指针,函数指针,和函数需要的参数。

          _Callback(Class *object, Method method, ParamType1 param1,

                          ParamType2 param2, ParamType3 param3, ParamType4 param4)
                : m_object(object), m_method(method), m_param1(param1),

                 m_param2(param2), m_param3(param3), m_param4(param4) {}

 //重载构造函数,通过本类_Callback 实例传入进行拷贝
            _Callback(_Callback < Class, ParamType1, ParamType2, ParamType3, ParamType4> const& cb)
                : m_object(cb.object), m_method(cb.m_method), m_param1(cb.m_param1),

                m_param2(cb.m_param2), m_param3(cb.m_param3), m_param4(cb.m_param4) {}
    };

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值