boost :: bindを使用したいのですが(実際に私の問題の解決策が正しいかどうかはわかりません)、ラッパーは引数を1つしか取らず、もう一方は一定の値に固定します。boost :: bindを使用して関数ラッパーを作成する方法
typedef boost::function<double (double)> callback;
と私の考えが持つ機能のラッパーを作成することでした。私の機能は私のコードで
double f(double a, double b)
{
return a/b;
}
または
double g(double b)
{
return 2*b; // b+b?
}
のように、私は一つの引数を持つ関数のtypedefを持って見てこれは:
callback cb;
cb = boost::bind(f, _1, 2)(x);
は、引数で渡された包み機能使用していることを、私は第三の機能を呼び出すことができるように:
double use(callback cb, double x, double y)
{
return cb(x0) - y0;
}
を私は、1つのまたは2つの引数を持つ約30の機能を持っており、第一又は第二は定数でなければなりません。この定数はuse()
には分かりませんが、use
に実装されているアルゴリズムはすべての関数で動作します。
私は私のコードをコンパイルしようとすると、私はラインcb = boost::bind(f, _1, 2)(x);
のエラーを取得:私はcout << boost::bind(f, _1, 2)(x);
で、私はエラーを取得しないよう、直接バインドを使用しようとすると
'* f' cannot be used as a function
を。
私はここで何が間違っていますか?
'boost :: bind'ドキュメントのすべての例がそうしているので、私は'(x) 'を追加しました。これを指摘しているように、不足している引数は 'use()'で埋められ、バインドが完了した時点では分からないため、明らかです。それは今働きます、ありがとう! – Christoph