2016-09-26 7 views
4

いくつかのパラメータが定義時に固定されるように設定されている関数への関数ポインタを作成する方法を教えてください。ここでいくつかのパラメータが設定された関数ポインタ

は、私が何を意味するかの例です:

のは、私は関数に

int add (int n, int m) { 
    return n+m; 
} 

を持っていると私が欲しいものを関数ポインタ型

typedef int (*increaser)(int); 

は関数へのポインタであるとしましょうaddは、最初のパラメータを1に固定し、2番目のパラメータを開いたままにします。

increaser f = &add(1,x); 

どうすればいいですか?

+3

は、ラッパーを書くあなたは合理的のように追加呼び出す新しい関数を定義している得ることができ、最も近い純粋なCソリューションにはあまり

なし。 –

+1

Cにはクロージャがありません。 – EOF

+0

私は関数型 'increaser'を呼び出さないでしょう。私にとっては、このシグネチャを実装する関数は完全に異なる何かを行うことができるので、むしろ 'int_unary_operator'です。 – glglgl

答えて

3

私が望むのは、最初のパラメータを1に固定し、2番目のパラメータを開いたままにするadd関数へのポインタです。

なものは、あなたが来ることができる最も近いラッパー関数を作成し、そのポインタにすることですC.ではありません:あなたは関数へのポインタを必要としない場合

int add1(int x) { 
    return add(1, x); 
} 

increaser f = &add1; 

#define increaser(x) add(1, (x)) 
1

Cではこれを直接行うことはできません。 C++にはstd :: functionとbindがありますが、これはこれを実現します。そして、あなたが行うことができます

int increment(int input) { 
    return add(1, input); 
} 

increaser f = &increment; 
関連する問題