devxlogo

Taking an Address of a Member Function

Taking an Address of a Member Function

The name of an ordinary function is implicitly converted to its memory address. For example:

 typedef int (*pf) ();int func();pf=func; // OK, 'func' is implicitly converted to '&func'

However, member functions don’t behave this way. To take their address, you must precede the address-of operator to their qualified name:

 class A;typedef int (A::*pmf)();class A{  pmf p; //pointer to memberpublic: int func(); A() { p=&A::func;} //OK};

Note that the following code will cause a compilation error:

 A() { p=func;} // error, '&A::' missing 

devx-admin

Share the Post: