我尝试通过指向其他类方法的方法调用一个方法,我跟着this: 但它对我没用。
考虑一下:
class y
{
public:
int GetValue(int z)
{
return 4 * z;
}
};
class hooky
{
public:
int(hooky::*HookGetValue)(int);
};
int(hooky::*HookGetValue)(int) = (int(hooky::*)(int))0x0; // memory address or &y::GetValue;
int main()
{
hooky h; // instance
cout << h.*HookGetValue(4) << endl; // error
return 0;
}
产生的错误是:
[错误]必须使用&#39;。&#39;或者&#39; - &gt; &#39;在中调用指向成员的函数 &#39; HookGetValue(...)&#39;,例如&#39;(... - &gt; * HookGetValue)(...)&#39;
答案 0 :(得分:1)
调用成员函数指针的正确语法是
(h.*HookGetValue)(4)
更新:原始代码无法正常工作的原因是由于C ++的运算符优先级:函数调用()
的优先级高于成员.*
的ptr。这意味着
h.*HookGetValue(4)
将被视为
h.*(HookGetValue(4))