将__thiscall传递给函数typedef

时间:2015-10-22 15:27:53

标签: c++ typedef

我甚至不知道如何正确地说出来,但我会尽力在代码中解释它:

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的函数,可以使用该对象的成员?

1 个答案:

答案 0 :(得分:0)

您需要正确定义功能指针。它是一个成员函数指针,所以它需要如下所示:

typedef void(Example::*ExampleFn )( PVOID p1, PVOID p2, PVOID p3 );

__thiscall只是成员函数的调用约定,因此自动设置。

您定义了一个指向普通函数的指针,因此它不起作用。这并不是真正关注呼叫转移。