2009-10-10 6 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

+3

아니, 그것은 함수의 포인터 아니다. 그것은 함수 포인터에 대해 * 부패 * 않습니다. – avakar

+0

오히려 요점은 무엇입니까? – Will

2

포인터를 정적 회원으로 비회원에 대한 포인터와 같은 유형이

보십시오.

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

TNX – mfolnovich

2

bar()은 정적 함수입니다. 즉, this 매개 변수가 없습니다.

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

TNX – mfolnovich