假设我有一个类:(抱歉另一个问题呃)
class myClass
{
private:
int a;
public:
int GetA() { return a; }
};
如果 GetA()
可能通常定义在 cpp int myClass::GetA() { return a;
我可以调试它并找到该函数的地址,但由于它是在类中定义的,所以我不能这样做。
在实际问题中,我想知道 GetDirection()
的地址,但如您所见,它没有任何地址,我尝试搜索调用它的指针,但没有没有任何汇编 call
指令
如果它是在类之外定义的,我会这样做:
int callGetAFunction( DWORD* pointerToThatClass )
{
int retMe;
__asm
{
mov ecx, pointerToThatClass
mov eax, 0x00427110 //example address of myClass::GetA()
call eax
mov retMe, eax
}
return retMe;
}
现在我有了指向那个类的指针,但是没有 GetA()
方法的地址,因为它是用它定义的,那么我该如何调用 GetA()
方法呢? (实际指针是在 dll 上检索的,我正在尝试从那里调用 GetA()
)
int main()
{
void* pClass = FunctionThatReturnsAPointerToAMyClassObject();
}
最佳答案
我不确定我明白你的意思。 addressof (&
) 运算符怎么样?
int (myClass::*ptr)() = &myClass::GetA;
myClass obj(42); // or however you construct the object
cout << (obj.*ptr)() << endl;
关于c++ - 类中定义的方法的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17257749/