Anfänger findet fehler nicht



  • ist das nicht schon mit namespace initialisiert?



  • Daniel1990 schrieb:

    ist das nicht schon mit namespace initialisiert?

    Das grenzt an Trolling oO

    Falls nicht, nein ist es nicht. Namespaces sind was ganz anderes und die machen auch was ganz anderes.



  • Ja sorry wenn ichs nicht Checke 😃 wenn ichs wüsste, würde ich ja nicht fragen...



  • Skym0sh0 schrieb:

    Daniel1990 schrieb:

    ist das nicht schon mit namespace initialisiert?

    Das grenzt an Trolling oO

    Nein, nicht ganz.

    @TE: Nur globale Variablen, sowie Variablen in einem Namensraum und (afaik) statische Variablen werden seit C++11 default-initialisiert (ohne es explizit dahin zu kritzeln). Deine Integer jedoch sind Member einer Klasse und haben mit einem Namensraum recht wenig am Hut.



  • Also ich soll in klasse.cpp, im defaultkonstruktor ... der über dem, den ich bisher als defaultkonstruktor angesehen habe... die Integer initialisieren, soweit, so gut. Wenn mir jetzt noch jemand ein Beispiel oder so dazu geben könnte? ich bekomme nämlich nur fehler raus 😞



  • Daniel1990 schrieb:

    Wenn mir jetzt noch jemand ein Beispiel oder so dazu geben könnte?

    Nö.
    Poste mal den Code des Default Constructors.



  • Ich hab jetzt mehrere Sachen geändert:
    in der Klasse selbst einmal:

    class Bus
    {
    public: 
    	Bus();
    	Bus(int buslinie, std::string ziel, int sitzplätze, int stehplätze, int passagiere);
    	Bus(const Bus &CopyBus);
    	void printmethode();
        ~Bus();
    private:
    	int Buslinie;
    	std::string Ziel;
    	int Sitzplätze;
    	int Stehplätze;
    	int Passagiere;
    };
    

    und in der Bus.cpp

    Bus::Bus() // Defaultkonstruktor 
    {
      Buslinie=0;
      Ziel= "nirgendwo";
      Sitzplätze=40;
      Stehplätze=50;
      Passagiere=0;
    }
    Bus::Bus(int buslinie, std::string ziel, int sitzplätze, int stehplätze, int passagiere)
    {
      Buslinie=buslinie;
      Ziel= ziel;
      Sitzplätze=sitzplätze;
      Stehplätze=stehplätze;
      Passagiere=passagiere;
    }
    


  • Also war ja mein Konstruktor schon der defaultkonstruktor, da er ja keine Parameter erwartet hat. Nur der darüber war einfach Falsch ... und ich habe angenommen das der Konstruktor, der die Parameter erwartet der defaultkonstruktor ist ... oder sowas in der Art ...



  • Als nächstes könntest du mal googlen, was eine "Initialisierungsliste" ist.



  • lösch deinen kopierkonstruktor raus, dann:
    1. ist dreierregel nicht mehr verletzt
    2. ist das programm schneller (init statt init & assign)
    3. sparst du codezeilen und gewährst mehr leserlichkeit



  • Der Kopierkonstruktor wird, wenn du ihn nicht selbst schreibst, vom Compiler automatisch generiert. Dabei kopiert der aber nur trivial alles Werte von a nach b. Aber das reicht bei dir, mehr macht dein Kopierkonstruktor auch nicht (doch macht er schon, aber du willst eigentlich nicht mehr machen, sondern nur rüberkopieren).

    Deshalb, wie mein Vorredner schon sagte, lösch den ganz raus.



  • Da habt ihr recht, aber in der Aufgabenstellung wurde es so gefordert, sonst würde ich ihn auch rausnehmen. Danke für eure Hilfe 🙂


Anmelden zum Antworten