2009-04-28 4 views
4

나는 boost :: bind와 threads를 생성 할 때 몇 가지 문제를 겪고있다.데이터로 부스터 스레드를 만드는 방법은 무엇입니까?

본질적으로 "스캐너"개체에 "scan"함수를 호출하고 싶습니다. bind를 사용하고 있습니다. 이 같은

뭔가 : 그러나

Scanner scanner; 
    int id_to_scan = 1; 

    boost::thread thr1(boost::bind(&scanner::scan)); 

는, 나는 구문 위로 넘어지고 있어요. 어떻게 데이터를 스캔으로 전달합니까? 생성자의 일부로?

답변

9

구성원 함수의 첫 번째 인수는 개체입니다. 당신이 전화를 원한다면

boost::bind(&scanner::scan, s); 

: 바인드와

scanner* s; 
s->scan() 

당신이 사용하는 것 :

그래서 당신은 전화를 원한다면

s->scan(42); 

사용이 :

boost::bind(&scanner::scan, s, 42); 

나는 종종 바인드 개체를 만드는 개체에 호출 할 바인딩 원하기 때문에 (210), 나는 종종 이렇게 :

boost::bind(&scanner::scan, this); 

행운을 빕니다.

+0

나는 가치가 없다. :) 고마워요! –

관련 문제