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


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

az "azonosító" deklarációja elrejti az osztálytagot

Megjegyzések

A helyi hatókörben lévő azonosító deklarációja elrejti az azonos nevű azonosító deklarációját az osztály hatókörében. Ez a figyelmeztetés tájékoztatja arról, hogy a hatókörben szereplő azonosítóra való hivatkozások a helyileg deklarált verzióra, nem pedig az osztálytag verzióra kerülnek, ami 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 az osztálytagok nevével.

Example

Az alábbi példa C4458-at hoz létre, mert a paraméter x és a helyi változó ymember_fn neve megegyezik az osztály adattagjaival. A probléma megoldásához használjon különböző neveket a paraméterekhez és a helyi változókhoz.

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