私はここにC++クラスでラップしたいCライブラリを持っています。ライブラリは非同期で動作し、エラーハンドラを設定する必要があります。私はCライブラリの静的クラス関数にエラーハンドラをラップする方法を知っていますが、void *user_data
ポインタのようなものに慣れています。this
を静的サンクからメンバ関数を呼び出すことができます。"this"へのポインタを持たないC++でのCライブラリコールバック
メンバー関数のコールバックを直接登録する方法はありますか?このライブラリにはいくつかのユーザーデータへのポインタがありませんか?
うん、そう思った。問題は、オブジェクトのインスタンスが1つしかない場合にのみ機能することです。 ( – Nidhoegger
何が起こりますか?概念的には、実行時に入力を受けない関数は、コンパイル時にその "入力"をハードコードする必要があります。しかし、あなたが登録した人を気にしないコールバックを取得しているなら、あなたができる最良の方法は、独立したコールバックハンドラのプールを持つことです。 –
ところで、あなたは問題を過度にしていないことを確認する必要があります。フレームワークはいくつかのグローバルステートデータ構造を事前登録することに依存していませんが、コールバックに直接渡すことはできませんが、フレームワーク内にグローバルステートが保持されていれば、コールバックが一度に1つずつ処理できるグローバルなデータ/キューのスタックを保持することができます。 –