Vererbung bewirkt seltsame Fehlermeldung
-
Hallo Community!
Ich krieg beim Konstruktor der Klasse Pkw immer eine kryptische Fehlermeldung und verstehe nicht was ich falsch gemacht habe.
Fehler:
Aufgabe33.cpp:32: warning: direct base âFahrzeugâ inaccessible in âPkwâ due to ambiguity
Aufgabe33.cpp: In constructor âPkw::Pkw(int, std::string, int, int, int)â:
Aufgabe33.cpp:37: error: no matching function for call to âKfz::Kfz(int&, int&)â
Aufgabe33.cpp:27: note: candidates are: Kfz::Kfz(int, std::string, int, int)
Aufgabe33.cpp:22: note: Kfz::Kfz(const Kfz&)#include <string>
#include <iostream>using namespace std;
class Fahrzeug{
private:
int raeder;
string farbe;
virtual void info();
public:
Fahrzeug(int r,string f):raeder(r),farbe(f){}
~Fahrzeug(){;}
};class Kfz: public Fahrzeug {
private:
int kw; // Leistung
int baujahr;
public:
Kfz(int r, string f, int Kw, int Baujahr)
:Fahrzeug(r,f),kw(Kw),baujahr(Baujahr){}
};class Pkw: public Fahrzeug, public Kfz {
private:
int sitzplaetze;
public:
Pkw(int r, string f, int Kw, int Baujahr, int Sitzplaetze)
:Fahrzeug(r,f),Kfz(Kw,Baujahr),sitzplaetze(Sitzplaetze){}
};int main()
{
return 0;
}Lg Caro
-
Ähm, wieos erbt Pkw von Kfz UND Fahrzeug?!?
Und dann verwendest du nicht existente Kostruktoren zur Basisinitialisierung.
Und in Pkw erst die Basis Fahrzeug initialisieren, um dann Kfz zu initialisieren, welches wiederum den Fahrzeug-Basisteil initialisiert.Lass einfach das ABleiten von Fahrzeug in Pkw weg. Das braucht es echt nicht!
Du hast mit Kfz als Basis von Pkw schon ein Fahrzeug als Basis...
-
Und wie initialisiere ich dann die Anzahl der Raeder und die Farbe im Pkw Konstruktor?
Wenn ich class Pkw : public Kfz {}; schreib dann weiss ich nicht wie mein Konstruktor aussehen muss.
-
class Pkw: public Kfz {
private:
int sitzplaetze;
public:
Pkw(int r, string f, int Kw, int Baujahr, int Sitzplaetze)
:Kfz(r, f, Kw,Baujahr),sitzplaetze(Sitzplaetze){}
};So?
-
Du hast doch einen passenden Konstruktor in Kfz! Warum verwendest du nicht den, sondern einen nicht existenten?
class Pkw: public Kfz { private: int sitzplaetze; public: Pkw(int r, string f, int Kw, int Baujahr, int Sitzplaetze) : Kfz(r, f, Kw, Baujahr), sitzplaetze(Sitzplaetze){} };
-
Danke für Deine Hilfe! Das hab ich jetzt kapiert!!!