devxlogo

OS System Calls

OS System Calls

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 }

devx-admin

Share the Post: