devxlogo

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 }

Charlie has over a decade of experience in website administration and technology management. As the site admin, he oversees all technical aspects of running a high-traffic online platform, ensuring optimal performance, security, and user experience.

See also  Five Early Architecture Decisions That Quietly Get Expensive

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.