1

私が抱えているジレンマは、時間の経過後に任意の関数を呼び出すことができるタイマー (ゲーム メーカーの用語を使用して「アラーム」とも呼ばれます) を作成したいということです。特定のシグネチャに基づいて特定の関数ポインタを呼び出すだけではありません。

簡単な質問: これは可能ですか?

4

2 に答える 2

3

C++11 のstd::functionandを使用std::bindして、タイマーの期限が切れた後に呼び出したい関数をラップできます。

于 2012-05-06T20:48:29.360 に答える
1

質問ポスターによる質疑応答

卵とチーズを取り込んでオムレツを返す関数があります。私の機能をあなたのタイマーに渡します。タイマーのアラームが鳴ったら、どの卵とどのチーズで私の機能を呼び出しますか? - ロバート・クーパー

もちろん、あなたが私に機能を渡したときにあなたが私にくれた卵とチーズを持った@RobertCooper!– ナイトクラッカー

@nightcracker: アラームを設定するときは、タイマーに機能、卵、チーズを与える必要があります。繰り返しになりますが、代わりにコールバックがベーコン、ホームフライ、ソーセージ、オートミールを受け取る場合は、アラームに関数、ベーコン、ホームフライ、ソーセージ、オートミールを指定する必要があります。タイプの任意の数と組み合わせについて、アラームは、後でコールバック関数で使用するために、それらのタイプのメンバーを記憶して保存できる必要があります。

おすすめ

調理器具を自由に組み合わせて収納できるアラームを作ることはお勧めしません。アラームの型シグネチャを一定かつシンプルに保ちます。クライアントが朝食を作ったり、バンドを始めたり、ロケット船を打ち上げたりするためにアラームを鳴らしたい場合は、クライアントに、必要な関数と変数を単純なファンクターまたはラムダ関数にラップさせます。それをオフにする1つの方法(operator ()、引数なしで呼び出されます)。

于 2012-05-07T05:03:15.893 に答える