2010-04-16 2 views
1

두 함수가 있습니다. 1. & DataSource(); 2. void DataConsumer (A *);중첩 된 부스트에서 반환 값을 사용/조작하는 방법 :: bind

달성하고자하는 것 : 하나의 문장을 사용하여 하나의 functor로 어셈블.

나는 시도했다 :

부스트 :: 기능 < 무효()> FUNC (부스트 : : 바인드 (DataConsumer, & 부스트 : : 바인딩 (데이터 소스))); 확실히 작동하지 않았다

는, 컴파일러>) (이 변환 'A *'로

부스트 :: 기능 < 공백을 ':: _ 바이 :: bind_t을 높일'수 없다고 func (boost :: bind (DataConsumer, boost :: addressof (boost :: bind (DataSource))))); 방법 중첩 된 부스트에서 반환 값을 사용하는 바인드 :: :

컴파일러는 'A &'

질문에 ':: _ 향상 바이 :: bind_t'에서 매개 변수 1 변환 할 수 없습니다라고? 또는 boost :: lambda :: bind를 사용하려는 경우.

답변

1

얘들 아, 난 그냥 다음과 같이 대답을 발견

boost::function< void()> func(
     boost::bind(DataConsumer, 
        boost::bind(boost::addressof<A>, boost::bind< A& >(DataSource)) 
        )   ); 

이론은해야한다 : 우리가 나중에 데이터 소스를 호출하기 때문에, 우리가 나중에뿐만 아니라 반환 값을 사용하는 펑터가 필요합니다.

+0

분명합니다! ;-) – DannyT

+0

소비자가 참조를 조정하도록 조정할 수 있다면 ... – Potatoswatter

관련 문제