[cfe-users] Can't get address of member-function
salvatore benedetto
salvatore.benedetto at gmail.com
Sun May 19 01:57:49 PDT 2013
Hi there,
first of all, I know the following should not be done usually, but I'm working
with C++ on a bare-metal project and it seems not to be forbidden by
the standard.
I need to get the address of a non-static member function and assign
it to an integer variable.
class MyClass
{
public:
MyClass()
{
//someAddress = (uint32_t)&run; // This works OK with static
member function
someAddress = (uint32_t)reinterpret_cast<void (*)()>(&MyClass::run);
}
private:
//static void run()
void run()
{
;
}
public:
uint32_t someAddress;
};
This code compiles with a warning with GCC, but I get the following
error with clang 3.2
address_of_member_function.cpp:10:33: error: reinterpret_cast from
'void (MyClass::*)()' to 'void (*)()' is not allowed
someAddress = (uint32_t)reinterpret_cast<void (*)()>(&MyClass::run);
Is this a bug in clang or am I missing something?
Regards,
Salvatore
More information about the cfe-users
mailing list