私は次のことをしたいと思います。私がこれを持っているとしましょう:
void f(const char* c) {
// Do stuff with c
}
void g(const char* c, int x, int y) {
// Do other stuff
}
私がやりたいことは、g から const char* c を取る関数を作成することです。あれは:
int a = 5;
int b = 9;
expression(g, a, b)("Hi!");
できれexpression(g)
ば、変数にも格納できます。この変数を宣言する方法もわかりません。
boost::bind; を使用してみました。ただし、boost::bind は boost::function を返します。通常の C++ 関数ポインターが必要です。さらに、このスレッドも見ました: demote boost::function to a plain function pointer And top 2つの解決策はどちらも機能しません。私の関数 f は、1 つのパラメーターを取るように制約されています (void* user_data ポインターはありません)。これが必要な理由は、引数が 1 つの関数、つまり const char* を受け取り、それを処理する 3 番目の関数 h があるためです。g から h の形で渡せるようにしたいです。
h(f) // Valid
h(expression(g, a, b)) // Would like for this to be valid, too
これが可能かどうかはわかりませんが、可能であれば教えてください:)。