Vererbung und Initalisierungsliste



  • Hab ein Problem mit einer bzw. 2 abgeleiteten Klassen.
    der Compiler gibt folgende Fehlermeldung aus:
    [C++ Fehler] kfz.cpp(52): E2312 'KFZ::marke' ist keine eindeutige Basisklasse von 'PKW'

    hier mein code:

    #ifndef kfzH
    #define kfzH
    
    #include <string>
    using std::string;
    //---------------------------------------------------------------------------
    class KFZ
    {
     protected:
     string marke;
     string model;
     int ps;
     string typ;
     static int printed;
    
     public:
     KFZ(){}
     KFZ(const string& Marke,const string& Model,int Ps);
     KFZ(const KFZ& op);
     virtual ~KFZ(){}
    
     string Hersteller();
     string Model();
     string Typ();
     int PS();
     virtual void Print()=0;
     static int Printed(int p=printed);
    
     KFZ& operator =(const KFZ& op);
     bool operator <(const KFZ& op);
    };
    //---------------------------------------------------------------------------
    class PKW : public KFZ
    {
     public:
     PKW(const string& Marke,const string& Model,int Ps);
     ~PKW(){}
     void Print();
    
    };
    //---------------------------------------------------------------------------
    class LKW : public KFZ
    {
     private:
     int nutzlast;
    
     public:
     LKW(const string& Marke,const string& Model,int Ps,int Nutzlast);
     LKW(const LKW& op);
     ~LKW(){}
     int Nutzlast();
     void Print();
     LKW& operator =(const LKW& op);
    };
    //---------------------------------------------------------------------------
    #endif
    

    und

    //---------------------------------------------------------------------------
    
    #pragma hdrstop
    
    #include "kfz.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    // KFZ
    KFZ::KFZ(const string& Marke,const string& Model,int Ps): marke(Marke),model(Model),ps(Ps){}
    //---------------------------------------------------------------------------
    string KFZ::Hersteller()
    {
    
    }
    //---------------------------------------------------------------------------
    string KFZ::Model()
    {
    
    }
    //---------------------------------------------------------------------------
    string KFZ::Typ()
    {
    
    }
    //---------------------------------------------------------------------------
    int KFZ::PS()
    {
    
    }
    //---------------------------------------------------------------------------
    int KFZ::Printed(int p)
    {
    
    }
    //---------------------------------------------------------------------------
    KFZ::KFZ(const KFZ& op)
    {
    
    }
    //---------------------------------------------------------------------------
    KFZ& KFZ::operator =(const KFZ& op)
    {
    
    }
    //---------------------------------------------------------------------------
    bool KFZ::operator <(const KFZ& op)
    {
    
    }
    //---------------------------------------------------------------------------
    //PKW
    PKW::PKW(const string& Marke,const string& Model,int Ps): KFZ::marke(Marke),model(Model),ps(Ps)
    {
     typ="PKW";
    }
    //---------------------------------------------------------------------------
    void PKW::Print()
    {
    
    }
    //---------------------------------------------------------------------------
    //LKW
    LKW::LKW(const string& Marke,const string& Model,int Ps,int Nutzlast): marke(Marke),model(Model),ps(Ps),nutzlast(Nutzlast)
    {
     typ="LKW";
    }
    //---------------------------------------------------------------------------
    int LKW::Nutzlast()
    {
    
    }
    //---------------------------------------------------------------------------
    void LKW::Print()
    {
    
    }
    //---------------------------------------------------------------------------
    LKW& LKW::operator =(const LKW& op)
    {
    
    }
    //---------------------------------------------------------------------------
    LKW::LKW(const LKW& op)
    {
    
    }
    //---------------------------------------------------------------------------
    

    Woran liegt das ?

    danke schonmal
    mfg walljumper



  • Du kannst keine Basisklassenmember in der Initialisierungsliste initialisieren, nur Basisklassen und eigene Member. Du solltest stattdessen den Konstruktor von KFZ am Anfang der Initialisierungsliste aufrufen.



  • thx funktioniert 🙂


Anmelden zum Antworten