相信 很少 人见过这种 写法 大神勿喷。
(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();