std::bind 사용법

프로그래밍 2014. 10. 23. 19:59


std::bind(함수 주소, 함수인자1, 함수인자2, 함수인자3, ...)

함수인자에 초기값을 설정한수 있고

bind로 생성한 함수의 인자로 받을 것이면

std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, ... 등을 새로운 함수 인자와 맵핑 시킬수있다.


void Func( int iA, float fB, bool bC );

라는 3개의 인자를 가지는 함수가있다면


auto funcA = std::bind( Func, 10, 2.0f, true );

funcA()

다음과 같이 단일 함수로 사용가능하고


그중 float 인자값을 새로운 함수의 인자로 받으려면

auto funcB = std::bind( Func, 10, std::placeholders::_1, true );

funcB( 2.0f );


처음인자는 float 두번쩨 인자는 int를 받고 싶으면

auto funcC = std::bind( Func, std::placeholders::_2, std::placeholders::_1, true );

funcC( 2.0f, 10 );


3번쩨 인자에 bool 값을 받고 싶으면

auto funcD = std::bind( Func, std::placeholders::_2, std::placeholders::_1, std::placeholders::_3 );

funcD( 2.0f, 10, true );


그리고 전역함수가 아닌 클래스 함수의 경우

&ClassA::FuncA 행태를 바인드의 첫번쩨 인자로 사용한다