본문 바로가기

System Programmings/C++

[C++] typedef로 멤버 함수 포인터 사용

반응형
#include <iostream>
using namespace std;

// typedef int (*TYPE)(int); 일반 함수를 typedef로 만든는 형식


class ask
{
public:
	int x;
	int f(int k);
	ask();
};

int ask::f(int k)
{
	x=k;
	cout << x << endl;
	return x;
}

ask::ask()
{
	x=0;
}

// typedef로 클래스의 멤버 함수 포인터 정의
typedef int (ask::*TYPE)(int); // 클래스 정의 아랫부분에 위치해야 한다.

int main()
{
	ask a;
	a.f(10);
	TYPE b=&ask::f; // &ask::f() 로 하면 에러
	(a.*b)(100); // <-- 함수 포인터 사용법 (stastic int f(int)함수의 경우 ask::f() 형식으로 사용);

	return 0;
}
반응형