devxlogo

Limitations of reinterpret_cast

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.

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