将C ++函数指针传递给C函数

时间:2011-10-20 15:38:08

标签: c++ c

  

可能重复:
  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){
  }
}

任何人都可以这样做。

2 个答案:

答案 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();
 }

这是基于这样的假设,即回调函数会使用您提供的某些数据*指针调回您。当你设置回电时,你通过了这个