可能重复:
How can I pass a C++ member function to a C API as a parameter
嗨我有一个C函数的类,期望回调如下: void fun_c(void *(* ptr)(void *))。
现在我想将C ++方法发送到c函数,任何人都可以告诉我如何执行此操作:
class ClassA{
method1(){
func(ClassA::func);
}
void * func(void * arg){
}
}
任何人都可以这样做。
答案 0 :(得分:0)
您不能使用实例函数执行此操作,因为C代码不具有可用实例,甚至不知道如何处理实例。您需要使用静态函数。
答案 1 :(得分:0)
基本上通常情况下你可以申报
void MyCallBack( void* arg )
{
ClassA * p = static_cast<ClassA*> (arg);
//Invoke any member functions of p as needed
p->HandleCallBack();
}
这是基于这样的假设,即回调函数会使用您提供的某些数据*指针调回您。当你设置回电时,你通过了这个