ホームページ > バックエンド開発 > C++ > C クラスのメンバー関数を C コールバック関数として使用できますか?

C クラスのメンバー関数を C コールバック関数として使用できますか?

Patricia Arquette
リリース: 2024-12-11 17:42:13
オリジナル
306 人が閲覧しました

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

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

C クラスのメンバー関数を C コールバック関数として登録することができます

Q1: まず、 C クラスのメンバー関数をやろうとしていますが、その場合はどのようにすればよいですか?

A1: はい、関数が静的として宣言されている場合、C クラスのメンバー関数をコールバック関数として登録することができます。関数。静的メンバー関数には、非静的メンバー関数とは異なり、最初の引数として暗黙的な 'this' ポインターがありません。これにより、C コールバック関数のシグネチャと互換性を持つことができます。

Q2: これに取り組むための代替/より良い方法はありますか?

A2: ここにあります。いくつかの代替オプション:

  • 無料関数の作成:コールバック関数のシグネチャと一致する別のフリー (非メンバー) 関数を実装し、それをライブラリに登録します。
  • 関数ポインターを使用します: 静的メンバー関数への関数ポインターを作成します。 C クラスの関数ポインタをライブラリに渡します。これには、ライブラリがコールバック関数として関数ポインターの使用をサポートしている必要があります。
  • ラッパー関数を使用する: 目的のクラス メンバー関数を呼び出し、以下と互換性のあるシグネチャを持つラッパー関数をクラスの外で定義します。 C のコールバック関数。次に、ラッパー関数をライブラリに登録します。

静的メンバー関数の使用例:

class A {
public:
    A() { register_with_library(&A::e); }
    ~A() {}

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

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

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