Поделиться через


Предупреждение компилятора (уровень 4) C4458

объявление "идентификатор" скрывает член класса

Объявление идентификатора в локальном область скрывает объявление одинаково именованного идентификатора в классе область. Это предупреждение позволяет узнать, что ссылки на идентификатор в этой область разрешают локально объявленную версию, а не версию члена класса, которая может быть вашим намерением. Чтобы устранить эту проблему, рекомендуется указать имена локальных переменных, которые не конфликтуют с именами членов класса.

Пример

В следующем примере возникает ошибка C4458, так как параметр и локальная переменная ymember_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;