2017-03-03 15 views
1

私はaが知られており、bは不明であるされているstd::function<int(std::string)>を作りたい構築物のSTD ::つの既知の入力引数を持つ関数から関数と1つの未知の入力引数

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

その機能を持っています。だから何かのように

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

しかし、この構文は機能しません。

正しい構文は何ですか?

+3

Goがあなたの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

あなたはラムダを使用することができます。

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

注:funcは、いくつかのコンパイラ生成された型を持っていますが、それはstd::function< int(std::string) >に暗黙的に変換されます。

関連する問題