Bagikan melalui


Compiler Warning (level 4) C4458

deklarasi 'pengidentifikasi' menyembunyikan anggota kelas

Deklarasi pengidentifikasi dalam cakupan lokal menyembunyikan deklarasi pengidentifikasi bernama identik pada cakupan kelas. Peringatan ini memungkinkan Anda mengetahui bahwa referensi ke pengidentifikasi dalam cakupan ini diselesaikan ke versi yang dideklarasikan secara lokal, bukan versi anggota kelas, yang mungkin atau mungkin bukan niat Anda. Untuk memperbaiki masalah ini, kami sarankan Anda memberikan nama variabel lokal yang tidak bertentangan dengan nama anggota kelas.

Contoh

Sampel berikut menghasilkan C4458 karena parameter x dan variabel y lokal memiliki member_fn nama yang sama dengan anggota data di kelas . Untuk memperbaiki masalah ini, gunakan nama yang berbeda untuk parameter dan variabel lokal.

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