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); }; //--------------------------------------------------------------------------- #endifund
//--------------------------------------------------------------------------- #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
