Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
a "tag" nem egyértelmű hozzáférése
Megjegyzések
Egy tag egynél több alaptípustól öröklődik, így az adott taghoz való korlátlan hozzáférés nem egyértelmű. A hiba megoldása:
- Explicit módon jogosult a taghoz való hozzáférésre.
- Az objektumot a tagot tartalmazó alaposztályba öntötte, mielőtt hozzáfér a taghoz.
- Nevezze át a nem egyértelmű tagot az alaposztályban.
- Hozza a tagot a hatókörbe.
Example
Az alábbi példa c2385-öt hoz létre:
// 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
}
A kétértelmű hívásokat úgy oldhatja meg, hogy func1 mindkét túlterhelés hatókörbe kerül. Ez azonban nem működik func2 , mert A::func2B::func2 nem fogad el argumentumokat, ezért a meghívásuk nem különböztethető meg a paraméterek alapján. A problémát a következő lépéssel oldhatja meg:
- A használni kívánt hatókör bemutatása
- A hívás explicit minősítése az alaptípussal
- A függvény meghívása előtt vetje el az objektumot.