Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: Beginner
May 9, 2000

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 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 
}
DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap