相关疑难解决方法(0)

使用C++类成员函数作为C回调函数

我有一个C库,需要注册回调函数来定制一些处理.回调函数的类型是int a(int *, int *).

我正在编写类似于以下内容的C++代码,并尝试将C++类函数注册为回调函数:

class A {
  public:
   A();
   ~A();
   int e(int *k, int *j);
};

A::A()
{
   register_with_library(e)
}

int
A::e(int *k, int *e)
{
  return 0;
}

A::~A() 
{

}
Run Code Online (Sandbox Code Playgroud)

编译器抛出以下错误:

In constructor 'A::A()',
error:
 argument of type ‘int (A::)(int*, int*)’ does not match ‘int (*)(int*, int*)’.
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 首先是可以注册一个C++类的memeber函数,就像我想要做的那样,如果是这样的话怎么样?(我在http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html上阅读了32.8 .但在我看来它并没有解决问题)
  2. 是否有替代/更好的方法来解决这个问题?

c c++ interop callback

45
推荐指数
4
解决办法
5万
查看次数

标签 统计

c ×1

c++ ×1

callback ×1

interop ×1