c4458警告-如何查找使用哪个变量

时间:2018-06-27 11:16:26

标签: c++

我需要将一个旧项目移植到最新的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 );

1 个答案:

答案 0 :(得分:3)

局部变量总是遮蔽类成员变量或全局变量。因此,在这种方法中,始终使用局部变量int cb