2017-03-03 12 views
1

我具備的功能構建的std ::從功能功能與一個已知的輸入參數和一個未知的輸入參數

int testFunctionA(double a,std::string b) 
{ 
    return 0; 
} 

其中我想打一個std::function<int(std::string)>a是已知的,b是未知的。所以像

std::function<int(std::string)> testFunctionB=testFunctionA(2.3,std::string b); 

但這種語法不起作用。

什麼是正確的語法?

+3

去打開你的C++的書,去那談'的std :: bind'的章節。 –

回答

2

您可以使用std::bind

std::function<int(std::string)> testFunc = 
     std::bind(&testFunction, 2.3, std::placeholders::_1); 

或λ(最好):

std::function<int(std::string)> testFunc = 
     [](std::string str){ return testFunction(2.3, str); }; 
4

您可以使用lambda:

auto func = [](std::string b){ return testFunction(2.3, b); }; 

注:func會有一些編譯器生成的類型,但它會隱式轉換爲一個std::function< int(std::string) >