Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
akses ambigu dari 'anggota'
Anggota diwarisi dari lebih dari satu jenis dasar, membuat akses yang tidak memenuhi syarat ke anggota tersebut ambigu. Untuk mengatasi kesalahan ini:
- Secara eksplisit memenuhi syarat akses ke anggota.
- Transmisikan objek ke kelas dasar yang berisi anggota sebelum mengakses anggota.
- Ganti nama anggota ambigu di kelas dasar.
- Bawa anggota ke dalam cakupan.
Contoh
Sampel berikut menghasilkan C2385:
// C2385.cpp
struct A
{
void func1(int i) {}
void func2() {}
};
struct B
{
void func1(char c) {}
void func2() {}
};
struct C : A, B
{
// Uncomment the following lines to resolve the first 2 errors
// The error below for the call to c.func2() will remain
// using A::func1;
// using B::func1;
};
int main()
{
C c;
c.func1(123); // C2385
c.func1('a'); // C2385
c.func2(); // C2385
c.A::func2(); // OK because explicitly qualified
c.B::func2(); // OK because explicitly qualified
static_cast<A>(c).func2(); // OK because of the cast
static_cast<B>(c).func2(); // OK because of the cast
}
Anda dapat menyelesaikan panggilan func1
ambigu dengan membawa kedua kelebihan beban ke dalam cakupan. Namun, ini tidak berfungsi func2
karena A::func2
dan B::func2
tidak mengambil argumen, jadi memanggilnya tidak dapat dibingkai oleh parameter mereka. Anda dapat mengatasi masalah ini dengan:
- Perkenalkan yang ingin Anda gunakan ke dalam cakupan
- Secara eksplisit memenuhi syarat panggilan dengan jenis dasar
- Transmisikan objek sebelum memanggil fungsi .