指向类方法的指针

时间:2009-10-10 12:50:20

标签: c++ class methods pointers

我正在尝试使用类方法的指针,所以我有类似的东西:

class foo {
    public:
    static void bar() {
}
};

void (foo::*bar)() = &foo::bar;

那不编译:(我明白了:

> error: cannot convert ‘void (*)()’ to
> ‘void (foo::*)()’ in
> initialization

3 个答案:

答案 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);