2009-10-10 65 views
2

我想有指针类的方法,所以我有这样的:指针类方法

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

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

无法编译:(我得到:

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

回答

4

静态方法,当按名称使用而不是调用时,是一个指针。

void (*bar)() = foo::bar; // used as a name, it's a function pointer 
... 
bar(); // calls it 
+0

TNX很多关于快速回答:) – mfolnovich 2009-10-10 12:59:19

+3

不,这不是一个指针,它是一个函数。它虽然会*衰减*到函数指针。 – avakar 2009-10-10 14:13:15

+0

哪一点更重要? – Will 2009-10-10 16:55:31

2

指针到静态构件具有相同的类型的指针,非成员

尝试:

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

TNX很多关于快速回答:) – mfolnovich 2009-10-10 13:01:10

2

bar()是一个静态函数,换句话说没有this参数。

void (*myfunptr)() = &(foo::bar); 
+0

TNX很多关于快速回答:) – mfolnovich 2009-10-10 13:04:00