bZGL Konstruktor
-
Was hat das Thema mit meinem Thema zu tun?
-
Ich würde hier auch zumachen.
Ich wittere Hausübungen.
-
Ich mag auch nichts mehr von Lkws und Pkws lesen, vor allem unter 5 verschiedenen Pseudonymen in 10 verschiedenen Threads. Da ich heute in die nächste Stufe aufgestiegen bin, möchte ich mir diese Meinungsmache einmal erlauben!

-
LKW und KFZ, nicht LKW und PKW.

Wobei das sowieso eine sinnfreie Vererbung ist, gibt es eigentlich keine Lehrbücher, wo man Sachen vererbt, die man auch später wirklich vererbt? (Klingt irgendwie komisch...)
-
Hier geht es weder um eine Hausarbeit noch um sonstige Arbeiten ... es dient letztendlich zum lernen....
Leider weis ich nicht was daran falsch sein sollte ich habe die Kfz mit Header KFZ.cpp und main ausgeführt alles hat funktioniert sobald ich dann eine Header eine cpp von lkw mache und in der Header den Kfz include ... kann ich nichtmals einen lkw mit seinen werten ausgeben... das erscheint mir etwas komisch und ich verstehe es auch nicht.
-
Richtig.
Wie wir von Wurstbrot und Supermarkt wissen müsste der Passagier von KFZ erben, damit der Passagier auch rumfahren kann.
-
es werden auch keinerlei Fehler angezeigt vor dem kompilieren.
1>LKW.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall KFZ::KFZ(void)" (??0KFZ@@QAE@XZ)" in Funktion ""public: __thiscall LKW::LKW(int,int,double)" (??0LKW@@QAE@HHN@Z)".
1>c:\users\grhei_000\documents\visual studio 2010\Projects\KFZ\Debug\KFZ.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========ich verstehe auch nicht was daran so schwer ist einfach mal eine kompetente Antwort zu geben ohne 1000 mal Drumherum zu diskutieren... wie im Kindergarten.
-
der Lkw erbt ja auch von KFZ......
und nicht anders rum wenn die Aktuellen Meldungen immer verschoben werden kann ich dafür mnichts.
-
MisterBasisklasse schrieb:
es werden auch keinerlei Fehler angezeigt vor dem kompilieren.
1>LKW.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall KFZ::KFZ(void)" (??0KFZ@@QAE@XZ)" in Funktion ""public: __thiscall LKW::LKW(int,int,double)" (??0LKW@@QAE@HHN@Z)".
1>c:\users\grhei_000\documents\visual studio 2010\Projects\KFZ\Debug\KFZ.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========ich verstehe auch nicht was daran so schwer ist einfach mal eine kompetente Antwort zu geben ohne 1000 mal Drumherum zu diskutieren... wie im Kindergarten.
Das hat der Compiler doch schon getan: "Verweis auf nicht aufgelöstes externes Symbol".
Du musst den Konstruktor halt definieren wenn du ihn verwenden willst.
Falls du "definieren" nicht verstehst: du musst den Code hinschreiben was der halt tun soll.
-
@hustbaer:
Und um Mehrfachvererbung einzuführen erbt ein Bus von Passagier und KFZ, denn sonst hat er ja keine Fahrgäste. ^^@topic:
Und es wäre auch klug, wenn du den BasisklassenKtor-Aufruf vernünftig einbaust...
-
Ist er nicht===????
KFZ::KFZ(char* nHersteller, char* nTyp,int nTankgr,double nVerbrauch100Km,double nTankinhalt,double nKmStand,double nGewicht): Hersteller(nHersteller),Typ(nTyp),Tankgr(nTankgr), Verbrauch100Km(nVerbrauch100Km), Tankinhalt(nTankinhalt), KmStand(nKmStand), Gewicht(nGewicht) {}
-
Nathan schrieb:
[...] BasisklassenKtor-Aufruf [...]
-
Ich frag mich eben wieso geht das ganze wenn ich Lkw h und lkw cpp ausblende
obwohl genau das selbe drin ist wie bei der Kfz ....wieso kann er also kein Kfz und ein lkw ausgeben???
-
???

Was willst du uns damit sagen?
-
Aber bitte in einem schönen Satz in dem evtl auch mal erklärt ist wieso das nicht funktioniert.
-
Ah, ich habe den Fehler gefunden, wenn ich mir nur gleich einmal ein paar Gedanken gemacht hätte, statt hier herumzupöbeln. Dafür möchte ich mich entschuldigen. Ich wünsche euch noch ein schönes Wochenende!
Viele Grüße,
MisterBasisklasse
-
KFZ Header
#ifndef KFZ_H #define KFZ_H #include <iostream> class KFZ { public: // Standartkonstruktor KFZ(); // Konstruktor KFZ(char* nHersteller, char* Typ, int nTankgr,double nVerbrauch100Km,double nTankinhalt,double nKmStand,double nGewicht); // Alles Zeigen void Show(); // Attribute private: char* Hersteller; char* Typ; int Tankgr; double Verbrauch100Km; double Tankinhalt; double KmStand; double Gewicht; }; #endifKFZ.cpp
#include <iostream> #include "KFZ.h" using namespace std; KFZ::KFZ(char* nHersteller, char* nTyp,int nTankgr,double nVerbrauch100Km,double nTankinhalt,double nKmStand,double nGewicht): Hersteller(nHersteller),Typ(nTyp),Tankgr(nTankgr), Verbrauch100Km(nVerbrauch100Km), Tankinhalt(nTankinhalt), KmStand(nKmStand), Gewicht(nGewicht) {} void KFZ::Show() { cout<< "Hersteller : "<< Hersteller<<endl; cout<< "Typ : "<< Typ<<endl; cout<< "Tankgroeße : "<< Tankgr <<endl; cout<< "Verbrauch auf 100 Km : "<< Verbrauch100Km <<endl; cout<< "Tankinhalt zurzeit : "<< Tankinhalt <<endl; cout<< "Aktueller Km Stand : "<< KmStand <<endl; cout<< "Zulässiges Gewicht : "<< Gewicht <<endl; }main.cpp
#include <iostream> #include "KFZ.h" //#include "LKW.h" using namespace std; int main() { KFZ Audi("Audi","R8",50,16.8,30.5,100000,1.0); //LKW Mercedes(2,1,40.5); Audi.Show(); //Mercedes.Show2(); system("pause"); return 0; }Hier gibt er mir Ohne Probleme ein KFZ aus....
Wenn ich aber hier eineLkw.h
#ifndef LKW_H #define LKW_H #include <iostream> #include "KFZ.h" class LKW : public KFZ { public: // Konstruktor LKW(int nAnzahlAchsen,int nAnhaenger, double nlaengeMeter); void Show2(); // Attribute private: int AnzahlAchsen; int Anhaenger; double laengeMeter; }; #endifund eine LKW.cpp
#include <iostream> #include "LKW.h" using namespace std; LKW::LKW(int nAnzahlAchsen,int nAnhaenger, double nlaengeMeter): AnzahlAchsen(nAnzahlAchsen),Anhaenger(nAnhaenger),laengeMeter(nlaengeMeter){} //show void LKW::Show2() { cout<< "Anzahl der Achsen : "<< AnzahlAchsen<<endl; cout<< "Typ : "<< Anhaenger<<endl; cout<< "laengeMeter : "<< laengeMeter<<endl; }einbinde und in der lkw.h #include "KFZ.h" mache und die main auskommentier...bekommt er Probleme obwohl alles genauso ist wie voher ......
Wieso bitte ==??
-
Ignoriere doch meinen Post komplett...
Du hast eine Klasse KFZ, die hat (vereinfacht) nur einen Kilometerstand und einen Modellnamen.
class KFZ { unsigned int kilometer_stand_; std::string modell_name_; public: KFZ(unsigned int kilometer_stand, std::string modell_name) : kilometer_stand_(kilometer_stand), modell_name_(modell_name) {} };Soweit alles klar, oder?
Nun hast du eine Klasse LKW, die zusätlich speichert, ob der LKW einen Anhänger hat.
class LKW : public KFZ { bool anhaenger_; public: LKW(unsigned int kilometer_stand, std::string modell_name, bool anhaenger) : KFZ(kilometer_stand_, modell_name_), anhaenger_(anhaenger) {} };Der Ktor nimmt nun die Parameter entgegen, die ein KFZ und ein LKW braucht. Die KFZ-Parameter werden an den Konstruktor für das KFZ weitergegeben und die LKW Parameter an die Konstruktoren der Daten für einen LKW. (wobei Konstruktoren hier nicht ganz richtig ist, aber stelle dir das so vor)
Edit: Na super, zu langsam geschrieben. -.-
-
ja so hab ich das doch ... versucht geht ja nicht bitte mal in mein Beispiel schaun..
wenn ich das dann versuche mit den zusatzatributen
dann meckert er hier über den :
LKW::LKW(int nAnzahlAchsen,int nAnhaenger, double nlaengeMeter): AnzahlAchsen(nAnzahlAchsen),Anhaenger(nAnhaenger),laengeMeter(nlaengeMeter): KFZ(char* nHersteller, char* Typ, int nTankgr,double nVerbrauch100Km,double nTankinhalt,double nKmStand,double nGewicht){}
-
Du hast einen Konstuktor KFZ(); deklariert, der aber nirgends definiert wurde.
Daher meckert der Compiler.
Du sagst also dass es eine Funktion gibt, die aber nirgends implementiert wird. Das geht genau so lange gut, bis du versuchst sie aufzurufen.Und da du beim LKW versuchst KFZ::KFZ() aufzurufen, geht es nicht mehr, sobald du den LKW mit drinnen hast.
MisterBasisklasse schrieb:
dann meckert er hier über den :
LKW::LKW(int nAnzahlAchsen,int nAnhaenger, double nlaengeMeter): AnzahlAchsen(nAnzahlAchsen),Anhaenger(nAnhaenger),laengeMeter(nlaengeMeter): KFZ(char* nHersteller, char* Typ, int nTankgr,double nVerbrauch100Km,double nTankinhalt,double nKmStand,double nGewicht){}OMFG
Ja, das geht nicht, weil die Syntax totaler Schwachsinn ist.MisterBasisklasse schrieb:
Wie spät ist es?
Zeit C++ zu lernen.