私は独自のファイルを開くために第三者のライブラリを使用するC++アプリケーションを作成しています。私のアプリケーションでは、ユーザーは次のようなことをすることができます:関数ポインタを使用したC++コールバック
int main(int argc, char* argv[]) {
CustomFileFormat f1;
f1.open("c:/file1.xyz");
f1.process();
CustomFileFormat f2;
f2.open("c:/file2.xyz");
f2.process();
Result r = f1.compare(f2);
r.generateReport();
return 0;
}
問題は、process()関数を使用していることです。この関数は次のように定義されたコールバック関数を公開するサードパーティのライブラリにコマンドを送信します。
typedef void (*FileProgressCallback)(double dProgress, bool& shouldAbort);
このコールバック関数は、受信した(どのくらいのファイルのが処理された私に言って、サードパーティのライブラリから呼び出されますdProgressの値は0と1の間です)、処理を停止させるために使用できるshouldAbort bool変数。
process()関数をコーディングする方法がわからないので、コールバックが呼び出されたときに返される結果がインスタンスf1かインスタンスf2かどうかがわかります。私のCustomFileFormatクラスのメンバ関数を定義することは可能ですか?呼び出された時、どの(これ)が使われているのか分かりますか?
現在のインスタンスで静的またはグローバル変数を作成することによって、オブジェクトのどのインスタンスが再生されているかを何らかの形で記録する必要があります。 – PaulMcKenzie