コンパイラの警告 (レベル 4) C4458
'identifier' を宣言すると、クラス メンバーが隠蔽されます
ローカル スコープの "識別子" を宣言すると、クラス スコープ内の同じ名前の "識別子" の宣言が隠蔽されます。 この警告により、このスコープ内の "識別子" への参照は、クラス メンバー バージョンではなく、ローカルで宣言されたバージョンに解決されることが示されます。これは、意図と異なる場合があります。 この問題を解決するには、クラス メンバー名と競合しないローカル変数名を指定することをお勧めします。
例
次の例では、パラメーター x
と、member_fn
のローカル変数 y
は、クラスのデータ メンバーと名前が同じであるため、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;