しばらく前に、bind (A と呼ぶ) によって返された callable を、from A の関数へのポインターであるパラメーターを期待する別の関数 (B と呼ぶ) に渡す方法の問題に遭遇しました。 bind によって返される呼び出し可能な A は非常に複雑な型を持っているため、私のアプローチをあきらめました。
次に、機能ヘッダーの「機能」について学びました。これは、問題を解決するかのように聞こえました。しかし、何度か試みた後、私は再び挫折しました!おそらくあなたは助けることができますか?動作しないコードを次に示します。
#include <iostream>
#include <functional> //Library for "bind" and "function"
#include <cmath>
using namespace std;
using namespace std::placeholders; //for _1, _2, _3 ...
//praboloid function
int parab(int x, int y) {
return pow(x,2) + pow(y,2);
}
//Take an integer and a pointer to a function
int funk(int a, int (*f)(int) ) {
return (*f)(a);
}
int main() {
auto f = bind(parab, _1, 0); // Bind the second value to 0
function<int (int)> fp = f;
//Any of the following lines creates and error
function<int (*)(int)> fp = f; //Error!
funk(-5, f); //Error!
funk(-5, &f); //Error!
funk(-5, fp); //Error!
funk(-5 &fp); //Error!
return 0;
}
私がやりたいことは、最初にバインドを使用して新しい呼び出し可能オブジェクトを作成し、そのバインドされた関数をパラメーターとして別の関数に送信することだけです。可能であれば、バインドによって返される面倒な型を処理する必要はありません。
この問題を解決するための別のアプローチを受け入れます。