Udostępnij za pośrednictwem


Ostrzeżenie kompilatora (poziom 4) C4458

deklaracja "identifier" ukrywa składowej klasy

Deklaracja identyfikatora w zakresie lokalnym ukrywa deklarację identycznie nazwanego identyfikatora w zakresie klasy. To ostrzeżenie informuje, że odwołania do identyfikatora w tym zakresie rozpoznają lokalnie zadeklarowaną wersję, a nie wersję składowej klasy, która może lub nie jest twoim zamiarem. Aby rozwiązać ten problem, zalecamy nadanie nazw zmiennych lokalnych, które nie powodują konfliktu z nazwami składowych klasy.

Przykład

Poniższy przykład generuje C4458, ponieważ parametr x i zmienna y lokalna w member_fn pliku mają takie same nazwy jak składowe danych w klasie. Aby rozwiązać ten problem, użyj różnych nazw parametrów i zmiennych lokalnych.

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