본문 바로가기

[C++]멤버함수에 대한 포인터.

반응형

#include "point.h"

   

// void XX() 형태의 함수에 대한 포인터

typedef void (*FP1)(int);

// void Point::XX() 형태의 멤버 함수에 대한 포인터

typedef void (Point::*FP2)(int);

   

int main()

{

  // 객체를 생성한다.

  Point pt(5050);

   

  // 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
-->