CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): testors (testors)
날 짜 (Date): 2002년 5월 28일 화요일 오후 03시 00분 05초
제 목(Title): Re: [Q] class내의 member함수 포인터 넘겨


포인터를 통해 인자로 넘겨주는 멤버 함수는 꼭 static 이어야 될꺼에요.
그렇지 않고선 이런 문제가 생기죠.

class X
{
public:
  int a() {
    // 여기서 this따위나 혹은 X의 멤버를 쓰게 되면,
       a 의 포인터만을 넘겨받은 녀석은 이를 해석할 방법이 없겠죠.
  }
};


해서 컴파일 타임에서 에러를 내준 것이겠죠.
위의 예제는 아래와 같이 해주어야 될꺼에요.

#include<iostream>

class A
{
public:
static  int a(int i);
static  int b(int i);
void f( int (*pf)(int) );
};

int A::a(int i){return i;}
int A::b(int i){return 2*i;}

void A::f( int (*pf)(int) ){std::cout << (*pf)(1) << '\n';}

int main()
{
        A mc;
        mc.f( mc.a ) ;
        mc.f( A::b );
        return 1;
}

- Testors
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.