从C回调调用C ++方法

我正在将C库用于C ++项目。 这个库允许我注册一个C回调,在这个回调中我应该调用一个对象的C ++方法。

情况是这样的:

myclass.h

class myclass { public: myclass(); void callme(); }; extern "C" { void init(): int callback(int,int); } 

myclass.cpp

 myclass::myclass() { init(); } void myclass::callme() { cout<<"Ok\n"; } extern "C" { void init() { //code setlibraryCallback(callback); //code } int callback(/*some arguments that I can't change*/ int a, int b) { //I should call "callme()" methos of my c++ object } } 

我可以从这个C回调调用C ++方法吗? 如果是,我该怎么办? 谢谢

编辑:我发现这个类似的问题如何从C调用C ++方法? 但是我不能将该对象作为无效指针传递给C回调,因为我无法更改回调参数。

库通常允许您提供void *值作为“上下文”,然后将其传递给回调。 如果库没有提供该function(呵呵?),您可以使用线程局部变量(在单线程程序中也称为全局变量)。

这就是代码通常的样子。

 class A { public: static void static_callback(void * ctx) { static_cast(ctx)->callback(); } void callback(); }; extern void library_function(void (*callback)(void *), void * ctx); int main() { A a; library_function(&A::static_callback, &a); }