Aviso do compilador (nível 4) C4458
a declaração de 'identifier' oculta um membro da classe
A declaração do identifier no escopo local oculta a declaração do identifier de nome idêntico no escopo da classe. Este aviso permite que você saiba que as referências a identifier neste escopo resolvem para a versão declarada localmente, não a versão de membro da classe, que pode ou não ser a sua intenção. Para corrigir esse problema, recomendamos que você forneça nomes de variáveis locais que não entram em conflito com nomes de membros de classe.
Exemplo
O exemplo a seguir gera o aviso C4458 porque o parâmetro x
e a variável local y
em member_fn
têm os mesmos nomes que os membros de dados na classe. Para corrigir esse problema, use nomes diferentes para os parâmetros e variáveis locais.
// C4458_hide.cpp
// compile with: cl /W4 /c C4458_hide.cpp
struct S {
int x;
float y;
void member_fn(long x) { // C4458
double y; // C4458
y = x;
// To fix this issue, change the parameter name x
// and local name y to something that does not
// conflict with the data member names.
}
} s;