[C++]class内的static方法指针

来源:互联网 发布:c语言控制台编程 编辑:程序博客网 时间:2024/06/10 03:06
#include<iostream>using namespace std;typedef  void voidFun_t(void*obj);class TBase{public:    TBase(int id):m_id(id){}    int m_id;    template<class K, void(K::*method)()>    static void void_fun(void *obj)    {          (((K*)obj)->*method)();    }};class T0:public TBase{public:    T0(int id):TBase(id){}    void f0(){cout <<"T0::f0,id="<<m_id<<endl; }    void f1(){cout <<"T0::f1,id="<<m_id<<endl; }};class T1:public TBase{public:    T1(int id):TBase(id){}    void f0(){cout <<"T1::f0,id="<<m_id<<endl; }    void f1(){cout <<"T1::f1,id="<<m_id<<endl; }};int main(){    voidFun_t *f00,*f01,*f10,*f11;    T0 t1(1);    T0 t2(2);    T1 t3(3);    T1 t4(4);    f00 = &(TBase::void_fun<T0,&T0::f0>);    f01 = &(TBase::void_fun<T0,&T0::f1>);    f10 = &(TBase::void_fun<T1,&T1::f0>);    f11 = &(TBase::void_fun<T1,&T1::f1>);    f00((void*)&t1);    f01((void*)&t1);    f00((void*)&t2);    f01((void*)&t2);    f10((void*)&t3);    f11((void*)&t3);    f10((void*)&t4);    f11((void*)&t4);    return 0;}

0 0
原创粉丝点击