次の方法で共有


コンパイラの警告 (レベル 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;