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
Home » Tip Bank » C++
Language: C++
Expertise: Intermediate
Jun 25, 2001

Limitations of reinterpret_cast


A reader tried to cast a nonstatic member function of a certain class to void*, as in the following example:
 
class A
{
public:
 void func();
};

void *pmf = reinterpret_cast < void *> (&A::func); // error

However, the compiler refused to accept this code. Why was the casting of a pointer to member to void * impossible, even with reinterpret_cast? This is not a compiler's whim. A pointer to member function cannot be converted to void * because the former is not a real pointer. Rather, in most cases it's a data structure that contains offsets and addresses that enable the implementation to access a function of a given object. Casting it to void * is technically impossible and therefore not allowed.
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


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

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date