Compartir a través de


Advertencia del compilador (nivel 4) C4458

la declaración de 'identifier' oculta el miembro de clase

La declaración de identifier en el ámbito local oculta la declaración del identifier con nombre idéntico en el ámbito de clase. Esta advertencia le permite saber que las referencias a identifier en este ámbito se resuelven en la versión declarada localmente, no en la versión de miembro de clase, que puede ser o no su intención. Para corregir este problema, se recomienda asignar nombres de variables locales que no entren en conflicto con los nombres de miembros de clase.

Ejemplo

El ejemplo siguiente genera la advertencia C4458 porque el parámetro x y la variable local y de member_fn tienen los mismos nombres que los miembros de datos de la clase. Para corregir este problema, use nombres diferentes para los parámetros y variables locales.

// 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;