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 }

See also  5 Benefits of Using Time Tracking Software
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist