기본 콘텐츠로 건너뛰기

라벨이 method pointer인 게시물 표시

Method Pointer

일반 함수도 포인터로 관리할 수 있지만, 클래스 메소드도 포인터로 관리할 수 있다. 타입정의는 기존버전은 typedef로 할 수 있고, C++11부터는 using을 써서 할 수도 있다. 타입정의(C++03): typedef [RETURN_TYPE] ([CLASS_NAME]::*[NEW_TYPE_NAME]) ([PARAMETERS...]) [CV...]; 타입정의(C++11): using [NEW_TYPE_NAME] = [RETURN_TYPE] ([CLASSNAME]::*) ([PARAMETERS...]) [CV...]; 호출할 때는 반드시 Instance가 필요하며, Instance와 메소드 포인터 사이는 반드시 괄호로 둘러싼다. 호출하기: ([INSTANCE]::*[METHOD_POINTER])([PARAMETERS...]); 예제) #include <iostream> using namespace std; class MyClass { public: void func1(int i) { cout << __func__ << ": value: " << m_value << " i: " << i << endl; } void func2(int i) { cout << __func__ << ": value: " << m_value << " i: " << i << endl; } void func3(int i) { cout << __func__ << ": value: " << m_value << " i: " << i << endl; } public: int m_value = 0; }; // 메소드 포인터 정의 // C...