複数のクラスのクラス メンバーを使用した C コールバック
問題:
C では、どのようにそれぞれが独自のコールバック メンバーを持つ複数のクラスで動作する汎用コールバック関数を作成できますかfunction?
解決策:
元々は静的コールバック メソッドとインスタンスへのポインターが使用されていましたが、このアプローチは改善の可能性があります。以下に 2 つの代替ソリューションを示します。
C 11 std::function と std::bind を使用する:
void addHandler(std::function<void(int)> callback);
std::bind(&MyClass::Callback, this, _1)
を使用してコールバック関数をインスタンスにバインドします。C 11 Lambda 関数の使用:
ラムダ関数を使用すると、コードをさらに簡素化できます:
handler->addHandler([](int x) { std::cout << "x is " << x << '\n'; });
以上が複数のクラスの汎用 C コールバックを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。