클래스 함수포인터 사용시 함수호출에 대한 문제
View 12,854 | 작성일2009.12.03 14:29
관련링크
본문
클래스 함수포인터 만드는 방법이 이렇습니다.
class test
{
public:
void (test::*pfunc)();
void run();
void pointfunc();
};
};
이렇게 만든뒤
void test::pointfunc()
{
pfunc = run;
}
}
이렇게 할당해 주시면 됩니다.
하지만 이런식으로 사용이 안됩니다...
main()
{
test a;
(a->*pfunc)();
}
}
이 지랄맞은 상황을 어떻게 대처해야 하는지 미칠듯이 고민하다가 방법을 알았는데
함수 포인터는 클래스 메쏘드 내에서만 불러집니다. 그래서
class test
{
public:
void (test::*pfunc)();
void run();
void pointfunc();
void runpfunc(){ (this->*pfunc)(); }
};
};
이렇게 해주시고 runpfunc() 함수를 호출하시면 됩니다. 이게 대체 무슨차인지 모르겠군요;;;