Teilen über


Compilerfehler C2584

'Klasse': Direkte Basis 'Base2' kann nicht zugegriffen werden; bereits eine Basis von 'Base1'

Bemerkungen

Class leitet sich bereits direkt von Base1. Base2 wird auch von Base1. Class kann nicht abgeleitet Base2 werden, weil dies bedeuten würde, dass sie (indirekt) von Base1 wieder erbt, was nicht legal ist, da Base1 es sich bereits um eine direkte Basisklasse handelt.

Beispiel

Im folgenden Beispiel wird C2584 generiert.

// C2584.cpp
// compile with: /c
struct A1 {
   virtual int MyFunction();
};

struct A2 {
    virtual int MyFunction();
};

struct B1: public virtual A1, virtual A2 {
    virtual int MyFunction();
};

struct B2: public virtual A2, virtual A1 {
    virtual int MyFunction();
};

struct C: virtual B1, B2 {
    virtual int MyFunction();
};

struct Z : virtual B2, virtual C {   // C2584
// try the following line insted
// struct Z : virtual C {
    virtual int MyFunction();
};