通常这样的回调看起来像这样:
void Callback( void* data)
{
CMyClass *myClassInstance = static_cast<CMyClass *>(data);
myClassInstance->MyInstanceMethod();
}
Run Code Online (Sandbox Code Playgroud)
当然,您需要确保数据指向您的类的实例.例如
CMyClass* data = new CMyClass();
FunctionCallingMyCallback( data, &Callback);
delete data;
Run Code Online (Sandbox Code Playgroud)
现在,如果我理解正确,你还需要传递一个char*.你可以将它们包装在一个结构中,然后在回调中解包它,如下所示:
MyStruct* data = new MyStruct();
data->PtrToMyClass = new CMyClass();
data->MyCharPtr = "test";
FunctionCallingMyCallback( data, &Callback);
delete data->PtrToMyClass;
delete data;
void Callback( void* data)
{
MyStruct *myStructInstance = static_cast<MyStruct *>(data);
CMyClass *myClassInstance = myStructInstance->PtrToMyClass;
char * myData = myStructInstance->MyCharPtr;
myClassInstance->MyInstanceMethod(myData);
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您可以修改CMyClass的定义,请将所有必要的数据放在类成员中,以便您可以像第一个示例中那样使用回调.
归档时间: |
|
查看次数: |
17500 次 |
最近记录: |