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 func
typedef 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
}