0
これは私の問題です:std::function
オブジェクトを作成して引数の一部を抽出し、それを別のstd::function
オブジェクトに渡したいと思います。新しいオブジェクトへの引数として与えられたstd :: functionの前方引数
:このポテンシャル関数へ
std::function<void(Event)> MakeEventCallback(std::function<void(std::shared_ptr<Input>&)>);
コール:Event
のコンストラクタがかかる
auto event = createEvent(...);
for (auto eventCallback : some_global_callbacks)
{
eventCallback(event);
}
:
some_global_callbacks.push_back(MakeEventCallback(
[](std::shared_ptr<Input>& input){ /*do stuff with input object;*/ input->DoStuff();}
));
some_global_callbacks
が最終的に、このように処理され、 std::shared_ptr<Input>
であり、ret Event
からEvent::getOriginalInput
を使用してください。
eventCallback
の呼び出しで、適切な入力でMakeEventCallback
に渡された元のcallback
を呼び出すようにします。
私はあなたの質問をよく理解できません: 'std :: function'オブジェクトに引数が含まれていません。引数は、ストアドファンクションが呼び出された時点で 'std :: function :: operator()'に渡されます。あなたは後になっていることを明確にすることができますか? – Angew
MakeEvent関数に渡されたlambdaが呼び出され、後でlambaで指定された引数を使用して、そのコンストラクタで同じ型の引数を取るEventオブジェクトを返すようにします。 – trexgris
'MakeEvent'は渡された' std :: function'を呼び出すのでしょうか?もしそうなら、それが提供するのと同じ議論を再利用することができますか?おそらくもう少しコードを表示できますか? – Angew