当然可以直接取&进行运算,但下面的方法经过实践证明更具有通用性,特别是在模板的应用中。
// 全局函数比较方法
virtual bool Equal(int Function_)
{
int function = 0;
__asm
{
push eax
mov eax, m_Function ; 将容器中的函数指针m_Function地址传给eax
mov function,eax ; 将eax中m_Function的地址传给function.
pop eax
}
return (function == Function_);
}
// 成员函数比较
virtual bool Equal(int Object_,int Function_)
{
int object = 0;
int function = 0;
// 获取_Object和_Function地址, 并且与传入参数进行比较
__asm
{
push eax
mov eax,m_Object ; 将m_Object地址传给eax
mov object,eax ; 将eax 地址传给object
mov eax,m_Function ; 将m_Function地址传给eax
mov function,eax ; 将eax地址传给function
pop eax
}
return (object == Object_ && function == Function_);
}