I'm trying to have pointer to class methods, so I have something like:
class foo {
public:
static void bar() {
}
};
void (foo::*bar)() = &foo::bar;
That doesn't compile :( I get:
> error: cannot convert ‘void (*)()’ to
> ‘void (foo::*)()’ in
&g开发者_JS百科t; initialization
A static method, when used by name rather than called, is a pointer.
void (*bar)() = foo::bar; // used as a name, it's a function pointer
...
bar(); // calls it
A pointer to a static member has the same type as a pointer to non-member.
Try:
void (*bar)() = &foo::bar;
bar()
is a static function, in other words there is not this
parameter.
void (*myfunptr)() = &(foo::bar);
精彩评论