This is one of those things where logic doesn't line up; you cannot bind a member function to an object in the way you can bind a data member to an object. Logic would say that since
Code:
//Data Member
int (Class::*) + Class* = int*
then this must also be true
Code:
//Member Function
void(Class::*)() + Class* = void(*)()
The reason you can bind a data member to an object is because there is actually a copy of that data member for each instance of the class; if a class contains an int, each object will have its own int, and all will have their own memory address, just like a global int will.
Member functions, however, only exist in a master table for the class; the actuall binary code for the function is not duplicated for each instance. For this reason, the function call needs a this pointer. In order to bind the two together, the program would have to turn the member function into a static function (by copying the binary code and doing some run-time recompilation), which is beyond the capability of pretty much any program.
What you need is a functor; this will allow you to bind a member function to an object and call it like a global function via an operator (). All you really need is a pointer to an object, a pointer to a member function, and an operator ().
ta0kira