C++ 類回調函數

#include <iostream>
using namespace std;




class MyTpl{
public:
virtual ~MyTpl(){};
virtual void Run(){};
protected:
MyTpl(){};
};


template<class T>
class Cb:public MyTpl{
private:
typedef void (T::*Done)();
Done run_;
T* obj_;
public:
Cb(T* obj,Done run):
obj_(obj),run_(run){}
void Run(){
(obj_->*run_)();
}
};


class Test{
public:
void Run0(){
printf("%s\r\n",__FUNCTION__);
}
};


template<class T>
MyTpl* NewCb(T* obj,void (T::*member)())
{
return new Cb<T>(obj,member);
}


int main()
{


Test test;
MyTpl *mytpl = NewCb(&test,&Test::Run0);
mytpl->Run();
return 0;
}
發佈了171 篇原創文章 · 獲贊 19 · 訪問量 86萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章