Skip to content

CDelegate 调用equal的时候返回false #99

@GoogleCodeExporter

Description

@GoogleCodeExporter
原因是:CDelegate(O* pObj, Fn pFn) : CDelegateBase(pObj, &pFn), m_pFn(pFn) { }
中的 
&pFn,对于同一个方法,取得只是指向这个方法的地址,但是�
��个地址可能每次都不一样,
这就造成每次赋值给CDelegateBase::m_pFn的值都不一样

修改方法:

CDelegate(O* pObj, Fn pFn) : CDelegateBase(pObj, ((void*)(*(int *)&(pFn)))), 
m_pFn(pFn) { }
赋值给CDelegateBase::m_pFn的值就是方法指针本身,这个就能保证
同一个方法,传进来的值都是一样的

Original issue reported on code.google.com by pro...@gmail.com on 18 Feb 2014 at 8:32

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions