2012-01-31 53 views
1

我發佈你的就是我想要做的一個例子,那就是功能更容易在這樣的boost ::綁定&提升::有部分ARGS

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); 

這隻綁定第一個參數。

如果你想綁定只有第二個,你需要一個佔位符:

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

我認爲,第一綁定操作也應該使用佔位符,如:升壓::綁定(myPrinter,someText, _1); – 2012-02-15 16:35:53

+0

@Gearoid:工作原理一樣。 – 2012-02-16 13:43:20

+0

我嘗試編譯不帶佔位符的部分綁定示例,並遇到緻密編譯器錯誤 – 2012-02-16 13:45:24