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;