#include <iostream>
#include <functional>

using namespace std;

class Person
{
public:
    void print(int i)
    {
        cout << i << endl;
    }
    
};


int main()
{
    function<void(Person*, int)> func = &Person::print;
    
    Person person;
    func(&person, 1);
}

functional 라이브러리에 포함되어 있는 function <t>를 사용하여 객체의 멤버함수 포인터를 얻는 방법이다.

 

function<void(Person*, int)> func = &Person::print;

위의 코드에서 &Person::print는 pring 함수의 주소 값을 의미한다.

 

func(&person, 1);

func 안에 &person 을 넣는 이유는 클래스 내부의 멤버함수는 항상 암시적으로 this 포인터가 첫 번째 매개 변수로 들어가기 때문이다.

 

배운 것

1. function 을 이용한 class 멤버 함수 포인터 정의 간략화

'Program > C,C++' 카테고리의 다른 글

연산자 오버로딩  (0) 2023.07.02
const 멤버 함수  (0) 2023.06.28
this 포인터를 이용한 빌더 패턴  (0) 2023.06.26
Class 전방 선언  (0) 2023.06.26

+ Recent posts