我需要将一个旧项目移植到最新的Visual Studio中,但是其中包含一些非常糟糕的代码,我不知道如何解决。
如果具有此功能:
void CBuffer::AddData( LPBYTE lpData, u_long uDataSize, u_long &uRemnant )
{
int cb;
LPBYTE ptr = GetWritableBuffer( (int *)&cb );
cb = ( cb < uRemnant? cb: uRemnant );
ASSERT( ptr + cb <= m_lpBufMax );
memcpy( (void*)ptr, &lpData[uDataSize - uRemnant], cb );
m_pTail = ptr + cb;
uRemnant -= cb;
}
提示
buffer.cpp(90): warning C4458: declaration of 'cb' hides class member
此处int cb覆盖了类CBuffer定义的u_long cb。
有没有办法告诉在此之后应该使用哪个cb?
LPBYTE ptr = GetWritableBuffer( (int *)&cb );
答案 0 :(得分:3)
局部变量总是遮蔽类成员变量或全局变量。因此,在这种方法中,始终使用局部变量int cb
。