我甚至不知道如何正确地说出来,但我会尽力在代码中解释它:
typedef void( *ExampleFn )( PVOID p1, PVOID p2, PVOID p3 );
struct Example
{
void ExampleFunction( PVOID p1, PVOID p2, PVOID p3 )
{
// do something with Example's members
}
};
Example example;
ExampleFn exampleFn = example.ExampleFunction;
所以,我收到了这个错误:
Error C2440 '=': cannot convert from 'void (__thiscall Example::* )(PVOID,PVOID,PVOID)' to 'ExampleFn'
我理解这个问题,例子:: ExampleFunction是__thiscall而ExampleFn不是,但我怎么能这样做呢?
如何让一个Example对象具有类似ExampleFn的函数,可以使用该对象的成员?
答案 0 :(得分:0)
您需要正确定义功能指针。它是一个成员函数指针,所以它需要如下所示:
typedef void(Example::*ExampleFn )( PVOID p1, PVOID p2, PVOID p3 );
__thiscall只是成员函数的调用约定,因此自动设置。
您定义了一个指向普通函数的指针,因此它不起作用。这并不是真正关注呼叫转移。