Verwenden einer C ++ - Klassenmitgliedsfunktion als C-Rückruffunktion
Ich habe eine C-Bibliothek, für die eine Rückruffunktion registriert werden muss, um einige Verarbeitungsschritte anzupassen. Typ der Rückruffunktion istint a(int *, int *)
.
Ich schreibe C ++ - Code ähnlich dem folgenden und versuche, eine C ++ - Klassenfunktion als Rückruffunktion zu registrieren:
<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>
Der Compiler gibt folgenden Fehler aus:
<code>In constructor 'A::A()', error: argument of type ‘int (A::)(int*, int*)’ does not match ‘int (*)(int*, int*)’. </code>
Meine Fragen:
Zuallererst ist es möglich, eine C ++ - Klassenmitgliedsfunktion zu registrieren, wie ich es versuche, und wenn ja, wie? (Ich las 32.8 beihttp://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html. Aber meiner Meinung nach löst es das Problem nicht)Gibt es eine alternative / bessere Möglichkeit, dies zu beheben?