2012-01-31 4 views
1

난 당신에게 내가 원하는 무엇의 예를 게시, 즉와 기능이 방법부스트 :: 바인드 &가 : 쉬운 부분 인수

void myPrinter(const char* text, int number){    
      printf("\n%s %d\n", text, number); 
     } 

    int main() { 

     char *someText="test";   

     boost::function<void(int my_number)> functionWithSavedArgs = boost::bind(&myPrinter, someText, ?????); 

     //then I have to call my function with saved args and give to it only variable "number" like: 
     int myBeautifulNumber = 2012; 
     functionWithSavedArgs(myBeautifulNumber); 
     // echo: test 2012 
    } 

어떤 아이디어에서 설명하는 부스트?

답변

2

해당 인수를 건너 뜁니다.

boost::function<void(int my_number)> functionWithSavedArgs 
     = boost::bind(&myPrinter, someText); 

이것은 첫 번째 인수 만 바인딩합니다. 부스트 : : 바인드 (myPrinter, someText :

boost::function<void(int my_number)> functionWithSavedArgs 
     = boost::bind(&myPrinter, _1, someNumber); 
+0

내가 처음 바인딩 작업도 자리를 사용해야한다고 생각합니다, 예를 들면 : 당신은 단지 두 번째를 결합하고 싶었다면

, 당신은 자리를 필요 _1); –

+0

@Gearoid : 그것은 동일하게 작동합니다. –

+0

자리 표시 자없이 부분 바인드 예제를 컴파일하고 치밀한 컴파일러 오류가 발생했습니다. –