cocos2dx 中的 看不懂的语法内容

来源:互联网 发布:游戏无线鼠标推荐 知乎 编辑:程序博客网 时间:2024/04/30 02:19

    CLGeneralSelector<SEL_VoidFunc> okSelector_;

    CLGeneralSelector<SEL_VoidFunc> cancelSelector_;


归纳以上的介绍,可以这样声明和使用类模板:
1) 先写出一个实际的类。由于其语义明确,含义清楚,一般不会出错。

2) 将此类中准备改变的类型名(如int要改变为float或char)改用一个自己指定的虚拟类型名(如上例中的numtype)。

3) 在类声明前面加入一行,格式为:
    template <class 虚拟类型参数>
如:
    template <class numtype> //注意本行末尾无分号
    class Compare
    {…}; //类体

4) 用类模板定义对象时用以下形式:
    类模板名<实际类型名> 对象名;
    类模板名<实际类型名> 对象名(实参表列);
如:
    Compare<int> cmp;
    Compare<int> cmp(3,7);

5) 如果在类模板外定义成员函数,应写成类模板形式:
   template <class 虚拟类型参数>
   函数类型 类模板名<虚拟类型参数>::成员函数名(函数形参表列) {…}

typedefstd::map<SuperAnimSpriteId,SuperAnimSprite *> IdToSuperAnimSpriteMap;

#define GENERAL_CALL(_SELECTOR, ...) ((_SELECTOR).target_->*(_SELECTOR).selector_)(__VA_ARGS__)


explicit JSONNode(char mytype =JSON_NODE)json_nothrowjson_hot;




typedef void (CCObject::*SEL_SCHEDULE)(float);// 用来调update
typedef void (CCObject::*SEL_CallFunc)();// 用来自定义无参回调

// 回调的执行者  
Person *m_pListen;  
  
// 回调函数指针  
SEL_CallFun m_pfnSelectior;  


// 回调函数指针赋值。需要强转成 SEL_CallFun  
m_pfnSelectior = (SEL_CallFun)(&Student::callBack);  
  
// 回调的执行对象,传this  
m_pListen = this;  


  
// 调用回调,参数是个string  
(m_pListen->*m_pfnSelectior)(m_name);  


#define callFunc_selector(_SELECTOR) (SEL_CallFun)(&_SELECTOR)  


m_pfnSelectior = callFunc_selector(Student::callBack);  
SEL_CallFun m_pfnSelectior = (SEL_CallFun)(&Student::callBack); 




  
// 定义基类的成员函数指针  
typedef void (Person::*SEL_CallFun)(string str);  


typedef void (*func)(int x);  
void up(int s);  
func f= up;  
f(3);  


0 0
原创粉丝点击