Предупреждение компилятора (уровень 4) C4458
объявление "идентификатор" скрывает член класса
Объявление идентификатора в локальной области скрывает объявление одинаково именованного идентификатора в области класса. Это предупреждение позволяет узнать, что ссылки на идентификатор в этой области разрешаются в локально объявленную версию, а не версию члена класса, которая может быть вашим намерением. Чтобы устранить эту проблему, рекомендуется указать имена локальных переменных, которые не конфликтуют с именами членов класса.
Пример
В следующем примере возникает ошибка C4458, так как параметр и локальная переменная y
member_fn
имеют те же имена, что x
и члены данных в классе. Чтобы устранить эту проблему, используйте различные имена параметров и локальных переменных.
// 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;