Partilhar via


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;