2016-06-01 10 views
-4

私の質問をチェックしていただきありがとうございます。 STLのように呼び出し可能なオブジェクト(ラムダ、関数オブジェクト、バインド、関数ポインタ、関数など)を引数として使用するテンプレート関数が必要ですが、実際にどのように実行するのかわからず、オンラインのリソースもありません。関数を使用して、呼び出し可能なオブジェクトを引数として定義します。

具体的には、コンテナをトラバースする関数を設計する必要があり、各要素に対してSTL :: for_each()のように呼び出し可能関数を呼び出して要素を操作します。このような例を挙げてください。

ありがとうございました!

+1

ヘルプを受ける機会を増やすにはあなたがしようとしていることの小さな例を試してみてください。 – kfsone

答えて

0

STLはこれを行うためにテンプレートを使用します。このような何か:

template<class CallableObjectType> 
void do_stuff(/* other arguments */, CallableObjectType object) 
{ 
    // ... 
    object(arg1, arg2, arg3); 
    // ... 
} 

言うことです、はそれを呼び出すことを除いて、呼び出し可能であるためにあなたのオブジェクトを強制しようとしませありません。オブジェクトが呼び出し可能でない場合、object(arg1, arg2, arg3)は無効なので、テンプレートをインスタンス化できないため、エラーが発生します。オブジェクトが呼び出し可能な場合は、それはあなたが期待する方法で動作します。

関連する問題