cocos2d-x 学到的变态语法

2016-03-15  本文已影响133人  windgod

相信 很少 人见过这种 写法 大神勿喷。
(target->*selectfun)();
好奇 所以 研究了下
typedef void (Ref::*SEL_CallFunc)();
看到了这个定义。
然后 模仿写了一个出来

class MyNode{
    
public:
    MyNode(){};
    void update(){
        printf("mytest");
    }
};

    MyNode *Target = new MyNode;
    typedef void (MyNode::*MyTestFunc)();
    MyTestFunc ff = static_cast<MyTestFunc>(&Node::update);
    (Target->*ff)();

这种语法还是少用为好 否则 会让维护的 抓摸不透. 还是推荐使用c++ 11的Lambda

class MyNode{
    
public:
    MyNode(){};
    void update(){
         printf("mytest");
    }
    std::function<void ()> test;
};

MyNode *Target = new MyNode;
Target->test = std::bind(&MyNode::update,Target);
Target->test();

更多Lambda 语法 参考 这些博客 不 复制了。。。

Lambda 参考资料一
Lambda 参考资料二

上一篇下一篇

猜你喜欢

热点阅读