bZGL Konstruktor



  • 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;
    
    };
    
    #endif
    

    KFZ.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 eine

    Lkw.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;
    
    };
    #endif
    

    und 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.



  • MisterBasisklasse schrieb:

    ja so hab ich das doch ...

    Nein.
    Vergleich nochmal deins und das was Nathan geschrieben hat, vielleicht fallen dir dann die Unterschiede auf.



  • versuche den Konstruktor mit den Attributen aufzurufen... und nicht den Default konstruktor... und diese ist in der Header Datei vorhanden oder nicht?? und ebenfalls in der Kfz cpp...



  • Nochmal: Nathan hat's dir vorgekaut. Lies es!
    Was Du da machst hat mit einem Aufruf nichts zu tun.



  • Hallo... könnte mir das einer evtl mal über einen Messager oder so erklären das hier wird nichts... immer durcheinander die arbeit das tausend mal zu posten.... gerne bezahl ich ihm auch den Stundenlohn.

    macht so keinen spass ich sag 1000 mal es geht nicht muss ein andere fehler sein ... keiner kann mir vernünftig von anfang bis ende das erklären..



  • Mache einfach einen Zeichen für Zeichen-Vergleich beim Konstruktoraufruf zwischen deiner und meiner Version...
    Andererseits: Wie hoch ist der Stundenlohn?



  • Nathan kontaktier mich einfach via icq oder Skype .... dann zeig ich dir geanu was ich habe und was das Problem ist.. hier kommt leider alles falsch rüber



  • Nö, kommt es nicht, du kannst bloss nicht lesen.



  • ...



  • Er hat mir noch nicht einmal seinen Namen gegeben...
    Und einen MisterBasisklasse scheint es bei Skype nicht zu geben.



  • Es wurde dir bereits eine Mail zukommen gelassen.. über das Portal hier.



  • Kann ich noch eine Rückmeldung erwarten =??



  • ...


Anmelden zum Antworten