0. 이전 방식의 한계점

이전 함수 포인터(1)에서 사용한 방법은 정적 함수와 전역 함수만 넣을 수 있다.

 

1. 멤버 함수 포인터

class Knight
{
public:

int GetHp(int, int)
{
    return _hp;
}


public:
    int _hp;
};
typedef int(Knight::*PMEMFUNC)(int, int);

int main()
{
    Knight k1;
    
    PMEMFUNC mfn;
    mfn = &Knight::GetHp;

    (k1.*mfn)(1,1);
}

mfn이 함수 타입이라는 것을 알리기 위해서 k1.*mfn 의 문법을 사용한다.

 

2. 동적 할당에서 멤버 함수 간접 호출

//~~
    Knight* k2 = new Knight;
    (k2->*mfn)(1, 1);

    delete k2;
}

 

'기초 C++ 스터디 > 객체지향' 카테고리의 다른 글

8-4. 템플릿 기초(1)  (0) 2023.06.08
8-3. 함수 객체(Functor)  (0) 2023.06.08
8-1. 함수 포인터(1)  (0) 2023.06.08
6-7. 전방 선언 vs 포함(#include)  (0) 2023.06.05
6-5. 캐스팅  (0) 2023.06.02