typedef void(__thiscall * LPVOIDPROC)(void);转换方法签名
class ClassA
{
LPVOIDPROC m_pProc;
void SetProc(LPVOIDPROC pProc) { m_pProc = pProc; }
void OnSomeEvent() { m_pProc(); }
}
class ClassB
{
ClassA* pCA;
void Proc() { /* ... */ }
void Init()
{
// Assume pCA != NULL
pCA->Set((LPVOIDPROC)&ClassB::Proc); // error C2440
}
}
如何摆脱这种错误C2440的: '类型转换':无法从 '无效(ClassB的__thiscall :: *)(无效)' 到 'LPVOIDPROC' 转换?我不想仅将LPVOIDPROC签名限制为ClassB。这应该是任何类和引用的proc不应该是静态的。
如果该方法不是静态的 - 您如何将类实例传递给ClassA? – Mark 2010-02-18 11:47:19