关于VC里的CMapPtrToPtr的一个疑点
关于VC里的CMapPtrToPtr的一个疑问
请问下面代码行m_TimerIdSimuRamPtrMap.GetNextAssoc(pos, (void*&)nID, (void*&)(pThis));
里的(void*&)是什么意思?指针的引用?为什么要这样用
------解决方案--------------------
void* 的引用,
为什么这么用得看你的 GetNextAssoc 函数是怎么写的了.
请问下面代码行m_TimerIdSimuRamPtrMap.GetNextAssoc(pos, (void*&)nID, (void*&)(pThis));
里的(void*&)是什么意思?指针的引用?为什么要这样用
static VOID __stdcall TimerProc ( HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime);
static CMapPtrToPtr m_TimerIdSimuRamPtrMap;
bool CSimuRam::Extend()
{
m_nExtendTimerID = ::SetTimer(NULL, 1, 50, TimerProc);
m_TimerIdSimuRamPtrMap.SetAt((void*&)m_nExtendTimerID, this);
return true;
}
VOID __stdcall CSimuRam::TimerProc (HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)
{
CSimuRam* pThis = NULL;
int nID;
POSITION pos = m_TimerIdSimuRamPtrMap.GetStartPosition();
while(pos)
{
m_TimerIdSimuRamPtrMap.GetNextAssoc(pos, (void*&)nID, (void*&)(pThis));
if (nID == iTimerID)
break;
}
if (pThis == NULL)
{
ASSERT(FALSE);
return;
}
if (pThis->m_nCurrentPos < pThis->m_nMaxStroke - pThis->m_nUpperDeadBand)
{
pThis->m_nCurrentPos += float(pThis->m_nRaiseSpeed) * 50 / 1000; //50ms
if (pThis->m_nCurrentPos >= pThis->m_nMaxStroke - pThis->m_nUpperDeadBand)
{
pThis->m_nCurrentPos = pThis->m_nMaxStroke - pThis->m_nUpperDeadBand;
::KillTimer(NULL, iTimerID);
}
}
}
------解决方案--------------------
void* 的引用,
为什么这么用得看你的 GetNextAssoc 函数是怎么写的了.