我正在尝试获取方法的地址(该方法称为 EndScene),它是 D3D9 对象的函数并将其分配给我的函数指针。
但是当我有地址时,我无法将它分配给我的函数指针,这是我正在使用的代码:
typedef HRESULT (IDirect3DDevice9::* EndSceneFunc)( void );
IDirect3DDevice9* pTempDev = ...;
// get the address of the virtual table
BYTE* pVtable = reinterpret_cast<BYTE*>( pTempDev );
// assign the address of the EndScene function to the function pointer (error)
EndSceneFunc endsceneFunc = pVtable + ( sizeof(void*) * EndSceneIndex);
我得到的错误是:BYTE* 类型的值不能用于初始化 EndSceneFunc 类型的实体。
有谁知道如何解决这一问题?
编辑:我必须通过走 vtable 来做到这一点