我正在尝试使用类方法的指针,所以我有类似的东西:
class foo {
public:
static void bar() {
}
};
void (foo::*bar)() = &foo::bar;
那不编译:(我明白了:
> error: cannot convert ‘void (*)()’ to
> ‘void (foo::*)()’ in
> initialization
答案 0 :(得分:4)
静态方法,当按名称使用而不是被调用时,是一个指针。
void (*bar)() = foo::bar; // used as a name, it's a function pointer
...
bar(); // calls it
答案 1 :(得分:2)
指向 static 成员的指针与指向非成员的指针具有相同的类型。
尝试:
void (*bar)() = &foo::bar;
答案 2 :(得分:2)
bar()
是一个静态函数,换句话说,没有this
参数。
void (*myfunptr)() = &(foo::bar);