2012-05-12 15 views
1

関数ポインターの配列を作成しようとしています。C++関数ポインター名前のない関数を持つ配列

アレイの機能は非常に少なくなります(10〜50の間)。

この宣言は、私が使用しているものと類似している:

int (*functions[15])(int, int); 

私が遭遇しています問題は、私が手でこれらすべての機能を定義する必要がありますということです。これは問題ありません。しかし、私はそれらのすべてに名前をつけても構いません。

配列に含まれる関数は、配列の外側から呼び出されることはありません。

私はこの質問に私の運を押しかけていることは知っていますが、この配列には匿名関数(代理人に似ています)を入れる方法がありますか?

または私はこれに似た宣言を使用できます。

int (*functions[15])(int, int); 

(*function[0])(int x, int y) 
{ 
    //stuff 
} 

(*function[1])(int x, int y) 
{ 
    //other stuff 
} 

可能であれば、私は、同様にこれですべてのC++ 11を、使用しないように願っています。私は多くの改良がなされていることを理解していますが、すべてのコンパイラがまだサポートしているかどうかはわかりません(プラットフォーム間で複数のコンパイラを使用するつもりです)。

すべての機能に名前を付けずにこれを行う方法はありますか、運が悪いですか?

+0

「boost :: lambda」を試してください。 – chris

+0

Lambdaは多くの一般的な[コンパイラ](https://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport)でサポートされています。 –

答えて

1

匿名関数を使用しない場合は、関数に名前を付ける必要があります。 pre C++ 11には選択肢がありません。

+0

助けてくれてありがとう! – Serge

関連する問題