23
2016-Jan
C++ 멤버 함수 포인터
작성자: Blonix
IP ADRESS: *.148.87.98 조회 수: 1773
일반적으로 함수포인터는
반환값 (*함수명)(매개변수)
ex ) void (*func)(int, int)
로 선언해서 사용한다.
근데 이대로 C++ 클래스의 멤버함수를 일반 함수포인터에 저장하려면 오류가 뜬다.
'this->함수명' 뭐 이런식으로 시도를 해봐도 안된다. 그러면 어떻게 하느냐?
아예 일반 함수포인터랑 선언을 다르게 해야한다.
멤버함수포인터의 선언방식은 아래와 같다.
반환값 (클래스명::*함수명)(매개변수)
왜 이러냐면 맴버함수의 경우 보통 내부적으로 this 인자를 받기 때문이다.
그러니까 선언해둔 함수포인터랑 인자가 달라져서 저장이 안되는 거다.
그러니까 멤버함수를 static 으로 선언할 경우
this 인자가 사라져서 인자가 일치하므로 일반 함수포인터에도 저장할 수 있다.