コンパイラの警告 (レベル 4) C4457
'identifier' を宣言すると、関数パラメーターが隠蔽されます
ローカル スコープで identifier を宣言すると、同じ名前の関数パラメーターの宣言が隠蔽されます。 この警告は、ローカル スコープでの identifier への参照は、パラメーターではなく、ローカルで宣言されたバージョンに解決されることを知らせるものです。これは、意図と異なる場合があります。 この問題を解決するには、パラメーター名と競合しないローカル変数名を指定することをお勧めします。
例
次の例では、パラメーター x
と、member_fn
のローカル変数 x
の名前が同じであるため、C4457 が発生します。 この問題を解決するには、パラメーターとローカル変数に別々の名前を使用します。
// C4457_hide.cpp
// compile with: cl /W4 /c C4457_hide.cpp
struct S {
void member_fn(unsigned x) {
double a = 0;
for (int x = 0; x < 10; ++x) { // C4457
a += x; // uses local x
}
a += x; // uses parameter x
}
} s;