Megosztás a következőn keresztül:


Fordító figyelmeztetése (4. szint) C4456

az "azonosító" deklaráció elrejti a korábbi helyi deklarációt

Megjegyzések

A helyi hatókörben az azonosító deklarációja elrejti az előző, azonos nevű helyi deklaráció deklarációját. Ez a figyelmeztetés tudatja Önvel, hogy a helyi hatókörben lévő azonosítóra mutató hivatkozások a helyileg deklarált verzióra kerülnek, nem pedig az előző helyi verzióra, amely lehet, hogy nem az Ön szándéka. A probléma megoldásához javasoljuk, hogy adjon meg olyan helyi változóneveket, amelyek nem ütköznek más helyi névvel.

Example

Az alábbi példa azért hozza létre a C4456-ot, mert a ciklusvezérlő változó int x és a helyi változó double xmember_fn neve megegyezik. A probléma megoldásához használjon különböző neveket a helyi változókhoz.

// C4456_hide.cpp
// compile with: cl /W4 /c C4456_hide.cpp

struct S {
    void member_fn(unsigned u) {
        double x = 0;
        for (int x = 0; x < 10; ++x) {  // C4456
            u += x; // uses local int x
        }
        x += u; // uses local double x
    }
} s;