[解決済み] クラスのメンバ関数をコールバックとして渡すにはどうすればよいですか?
2023-05-19 12:51:23
質問
コールバックとして関数ポインタを渡す必要があるAPIを使用しています。私は私のクラスからこのAPIを使用しようとしていますが、私はコンパイルエラーが発生します。
以下は、私がコンストラクタから行ったことです。
m_cRedundencyManager->Init(this->RedundencyManagerCallBack);
これはコンパイルされません - 私は、次のエラーが発生します。
エラー 8 エラー C3867: CLoggersInfra::RedundencyManagerCallBack': function call missing argument list; use '&CLoggersInfra::RedundencyManagerCallBack' to create a pointer to member.
を使うという提案を試してみました。
&CLoggersInfra::RedundencyManagerCallBack
- を使うという提案を試しましたが、私にはうまくいきませんでした。
このための任意の提案/説明?
VS2008を使用しています。
ありがとうございました!!。
どのように解決するのですか?
メンバ関数ポインタは、"this"オブジェクト引数を期待するため、通常の関数ポインタと同様に扱うことができないため、うまくいきません。
代わりに、以下のように静的メンバ関数を渡すことができます。この点では、通常の非メンバ関数と同じです。
m_cRedundencyManager->Init(&CLoggersInfra::Callback, this);
この関数は次のように定義することができます。
static void Callback(int other_arg, void * this_pointer) {
CLoggersInfra * self = static_cast<CLoggersInfra*>(this_pointer);
self->RedundencyManagerCallBack(other_arg);
}
関連
-
[解決済み】構造体のベクター初期化について
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] コールバック内で正しい `this` にアクセスする方法
-
[解決済み] setTimeout()コールバックにパラメータを渡すにはどうすればよいですか?
-
[解決済み] 既存のコールバックAPIをプロミスに変換するにはどうすればよいですか?
-
[解決済み】C言語の関数ポインタはどのように機能するのですか?
-
[解決済み】キャプチャしたラムダを関数ポインタとして渡す
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】coutはstdのメンバではない
-
[解決済み】識別子 "string "は未定義?
-
[解決済み] error: 'if' の前に unqualified-id を期待した。
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み】Visual Studio 2013および2015でC++コンパイラーエラーC2280「削除された関数を参照しようとした」が発生する
-
[解決済み] gdbを使用してもデバッグシンボルが見つからない
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】変数やフィールドがvoid宣言されている
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された