ホームページ > バックエンド開発 > C++ > 静的 C クラス メンバー関数を C コールバックとして使用するにはどうすればよいですか?

静的 C クラス メンバー関数を C コールバックとして使用するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-14 06:46:13
オリジナル
209 人が閲覧しました

How Can a Static C   Class Member Function Be Used as a C Callback?

静的 C クラス メンバー関数を C コールバック関数として使用する

C では、クラス メンバー関数をC コールバック関数。ただし、メンバー関数が次のように宣言されている場合に限ります。 static.

説明:

非静的メンバー関数には、this ポインターに対応するクラス A* 型の暗黙の最初のパラメーターがあります。ただし、C コールバック関数には通常、この最初のパラメータがありません。クラス メンバー関数をコールバックとして登録するには、暗黙的な this ポインターを削除する必要があります。

解決策:

メンバー関数を静的として宣言します。これは、メンバー関数が this ポインターにアクセスできないことを意味します。

class A {
  public:
   A();
   ~A();
   static int e(int *k, int *j);
};

A::A()
{
   register_with_library(e)
}

int
A::e(int *k, int *e)
{
  return 0;
}
ログイン後にコピー

代替アプローチ:

使用できない場合、または使用することが望ましい場合静的メンバー関数の場合、代替アプローチには以下が含まれます:

  • プレーン C の作成function: クラス メンバー関数のプロキシとして機能する C 関数を定義し、その C 関数をコールバックとして登録します。
  • 関数ポインターの使用: 関数を作成しますクラスのメンバー関数を指すポインターを作成し、その関数ポインターをコールバックとして登録します。
  • ラムダの使用Expression: C 11 では、匿名関数を定義する便利な方法を提供するラムダ式が導入されています。ラムダ式を使用してコールバック関数を実装できます。

以上が静的 C クラス メンバー関数を C コールバックとして使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート