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