/*      이 녀석이 하는 짓      */

어떠한 함수로 인자들의 값을 넘겨주는것 같음.
정확히 어디서 쓰이는건지 이해가 아직은 안되고 있음.

우선 사용법.

bind( 함수명, (상수 값 or 파라메터 인덱스)~ 쭉 ) ( 아규먼트 )


ex)
boost::bind( func, 1, _1, 2, _3, _2 ) ( 10, 11, 12 );
 == func( 1, 10, 2, 12, 11 ); 와 같다.

// 단, func라는 함수는 다섯개의 인자를 받는 함수여야 함.
// 인자수가 적거나 많으면 컴파일 에러

// function 이나 signal과 연동해서 쓰는법.
int Func( int x, int y )
{
      do something;
      return 0;
}

// 함수의 원형과 같이 펑션과 시그널을 잡아줌. 리턴형 int, 파라메터 int 2개
boost::function< int( int, int ) > f01;
boost::signal< int( int, int ) > s01;

// 인자로 아규먼트를 받도록 구현
f01 = boost::bind( Func, _1, _2 );

boost::signals::connection c01 = s01.connect( boost::bind( Func, _1, _2 ) );
// boost::signals::connection c01 = s01.connect( f01 );  // 위에랑 동일

cout << f01( 10, 20 ) << " " << s01( 20, 30 ) << endl;

//---------------------------------------------------
// 멤버함수를 연결하는 법
struct X {
 int F( int );
};

X x;

boost::bind( $X::F, _1, _2 ) ( x, 10 );

// Function을 써서 사용한 방법. 결과는 위와 동일.
boost::function< int( X*, int ) > f01;
f01 = boost::bind( $X::F, _1, _2 );
f01( &x, 10 );

'Programming > Boost' 카테고리의 다른 글

asio - TCP_server( async )  (0) 2009.12.01
asio -- 1  (0) 2009.12.01
Signal 공부중인거 정리. < 04 >  (0) 2009.08.20
Signal 공부중인거 정리. < 03 >  (0) 2009.08.20
Signal 공부중인거 정리. < 02 > - 1  (0) 2009.08.19