У меня есть библиотека C, для которой требуется функция обратного вызова для настройки некоторой обработки. Тип функции обратного вызова int a(int *, int *)
.
Я пишу код на С++, похожий на следующий, и попытаюсь зарегистрировать функцию класса С++ в качестве функции обратного вызова:
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()
{
}
Компилятор выдает следующую ошибку:
In constructor 'A::A()',
error:
argument of type ‘int (A::)(int*, int*)’ does not match ‘int (*)(int*, int*)’.
Мои вопросы:
- Прежде всего, возможно зарегистрировать функцию memeber класса С++, как я пытаюсь сделать, и если да, то как? (Я прочитал 32.8 на http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html, но, на мой взгляд, это не решает проблему)
- Есть ли альтернативный/лучший способ справиться с этим?