Question:
How can I pass a member function of a class as a pointer in C (pointer type expected: void *)?
Answer:
You can’t pass a pointer to a C++ class member as void *. A pointer to member is not really a pointer, it’s a data structure. One way to get around this is to declare the member function static. A pointer to a static member function actually is a pointer to an ordinary function.
For example:
caller(void * a_ptr); //your caller functypedef void * (*PF)();class A{public: static void* func(); //callback member function};int main(){ PF pf; pf = &A::func; // pf is a pointer to function caller(pf);}caller(void * a_ptr){ PF ptr = (PF) a_ptr; void * val = ptr();//call member function }