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