相信 很少 人見過這種 寫法 大神勿噴盲厌。
(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)();
這種語法還是少用為好 否則 會讓維護(hù)的 抓摸不透. 還是推薦使用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();