Usando una función miembro de la clase C ++ como una función de devolución de llamada C
Tengo una biblioteca de C que necesita una función de devolución de llamada para ser registrada para personalizar algunos procesos. El tipo de la función de devolución de llamada esint a(int *, int *)
.
Estoy escribiendo un código C ++ similar al siguiente e intento registrar una función de clase C ++ como la función de devolución de llamada:
<code>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() { } </code>
El compilador arroja el siguiente error:
<code>In constructor 'A::A()', error: argument of type ‘int (A::)(int*, int*)’ does not match ‘int (*)(int*, int*)’. </code>
Mis preguntas:
En primer lugar, es posible registrar una función de miembro de la clase de C ++ como la que estoy tratando de hacer y, de ser así, ¿cómo? (Leí 32.8 enhttp://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html. Pero en mi opinión no resuelve el problema.¿Hay alguna forma alternativa / mejor de abordar esto?