天天看点

[C++]终极详解:类的成员函数与STD::FUNCTION之间的转换使用

class test{

public :
    void * func(void *){
        std::cerr << " void * fcu(void *) output" << std::endl;
        return nullptr;
    }
};

typedef void* (test::* MFP)(void*);

//example code:
test *tt = new test();
MFP p = &test::func;
//进行第一次转换
void * pfunc=(unsigned*)&p;
//根据传值获取成员函数地址
MFP * addr =(MFP*)pfunc;
//绑定函数与类
auto scall = std::bind(*addr,*tt,std::placeholders::_1);

//执行操作
void* px = NULL;
scall(px);
           

参照上述代码即可实现成员类函数与成员类完全由指针代替,既保留了指针的灵活性,同时又确保了调用函数的类型安全。