Compiler Warning (level 1) C4540
dynamic_cast digunakan untuk mengonversi ke dasar yang tidak dapat diakses atau ambigu; pengujian run-time akan gagal ('type1' ke 'type2')
Anda digunakan dynamic_cast
untuk mengonversi dari satu jenis ke jenis lainnya. Pengompilasi menentukan bahwa pemeran akan selalu gagal (mengembalikan NULL) karena kelas dasar tidak dapat diakses (private
, misalnya) atau ambigu (muncul lebih dari sekali dalam hierarki kelas, misalnya).
Berikut ini menunjukkan contoh peringatan ini. Kelas B berasal dari kelas A. Program ini menggunakan dynamic_cast
untuk melemparkan dari kelas B (kelas turunan) ke kelas A, yang akan selalu gagal karena kelas Bprivate
dan dengan demikian tidak dapat diakses. Mengubah akses A untuk public
menyelesaikan peringatan.
// C4540.cpp
// compile with: /W1
struct A {
virtual void g() {}
};
struct B : private A {
virtual void g() {}
};
int main() {
B b;
A * ap = dynamic_cast<A*>(&b); // C4540
}
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk