반응형
#include "point.h"
// void XX() 형태의 함수에 대한 포인터
typedef void (*FP1)(int);
// void Point::XX() 형태의 멤버 함수에 대한 포인터
typedef void (Point::*FP2)(int);
int main()
{
// 객체를 생성한다.
Point pt(50, 50);
// FP1, FP2를 사용해서 Print() 함수를 가리킨다.
// FP1 fp1 = &Point::SetX; // 에러
FP2 fp2 = &Point::SetX; // 성공
// 함수 포인터를 사용해서 함수 호출
(pt.*fp2)(100);
// 내용 출력
pt.Print();
return 0;
}
멤버함수의 포인터는 어느 한 클래스의 멤보 함수들만 가르킬 수 있다. fp2는 오직 Point 클래 스의 함수만을 가르킬 수 있다.
typedef void (Point::*FP2)(int)
typedef로 타입
이름을 재정의 한다.
Point:: point 클래스의 멤버 함수를 가르킬 수 있는 뜻
*FP2 새로 정의한 타입의 이름.
void xxx(int)와 같은 원형을 가진 맴보 함수를 가르킬 수 있다.
반응형
'About 프로그래밍!!! > C++' 카테고리의 다른 글
[C++]객체의 배열. (0) | 2010.06.23 |
---|---|
[C++]멤버함수의 오버로딩. (0) | 2010.06.23 |
[C++]부호 바꿔가며 더하기. (0) | 2010.06.22 |
[C++]인라인 함수. (0) | 2010.06.22 |
[C++]정적멤버 선언 및 초기화 (0) | 2010.06.22 |