【发布时间】:2017-11-26 15:20:16
【问题描述】:
我正在编写一个使用第 3 方库打开专有文件的 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 );
将从第 3 方库调用此回调函数,告诉我已处理了多少文件(接收到的 dProgress 值将在 0 和 1 之间)以及我可以用来导致处理停止的 shouldAbort 布尔变量.
我遇到的问题是我不知道如何编写 process() 函数,以便在调用回调时,我知道返回的结果是例如 f1 还是实例 f2。是否可以定义我的 CustomFileFormat 类的成员函数,以便在调用时知道使用的是哪个(this)?
【问题讨论】:
-
您必须以某种方式记录正在播放的对象实例,可能通过使用当前实例创建静态或全局变量。
标签: c++ function callback function-pointers