다음을 통해 공유


컴파일러 경고(수준 4) C4458

'identifier' 선언은 클래스 멤버를 숨깁니다.

로컬 범위의 식별자 선언은 클래스 범위에서 동일한 이름의 식별자 선언을 숨깁니다. 이 경고는 이 범위의 식별자에 대한 참조가 클래스 멤버 버전이 아니라 로컬로 선언된 버전으로 확인된다는 것을 알 수 있습니다. 이는 의도일 수도 있고 아닐 수도 있습니다. 이 문제를 해결하려면 클래스 멤버 이름과 충돌하지 않는 지역 변수 이름을 지정하는 것이 좋습니다.

예시

다음 샘플에서는 매개 변수 x 와 지역 변수 y member_fn 의 이름이 클래스의 데이터 멤버와 동일하기 때문에 C4458을 생성합니다. 이 문제를 해결하려면 매개 변수 및 지역 변수에 다른 이름을 사용합니다.

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