Buffer ist zu klein troz dynamischem anlegen



  • Hör' auf Swordfish.



  • Schauder schrieb:

    Hör' auf Swordfish.

    Ist doch wahr. Hat ein falsches delete im Destruktor, assignment operator fehlt und unnötiges langsames zweifaches Berechnen der Stringlänge. Diese Fehler und der aktuelle wären nicht passiert, wenn er std::string verwendet hätte. Und der Code wäre wesentlich kürzer.

    BTW @TE: Kennst du Initialisierungslisten für Konstruktoren?



  • #include <string>
    
    class Kunde
    {
        std::string name;
        std::string ort;
        int alter;
        double umsatz;
        int transaktion;
        int id;
    
        static int anzahl;
    
    public:
        Kunde(const std::string & name = "Kein Name", const std::string & ort = "Kein Ort", const int alter = 0);
        Kunde(const Kunde &src);
    
        void kaufe(double u);
        static int getAnzahl();
    
        void print() const;
    };
    
    #include "Kunde.hpp"
    #include <iostream>
    
    int Kunde::anzahl = 0;
    
    Kunde::Kunde(const std::string & name, const std::string & ort, const int alter)
    	: name(name), ort(ort), alter(alter), umsatz(0), transaktionen(0), id(Kunde::anzahl++)
    {}
    
    Kunde::Kunde(const Kunde &src)
    	: name(src.name), ort(src.ort), alter(src.alter), umsatz(0), transaktionen(0), id(Kunde::anzahl++)
    {}
    
    void Kunde::kaufe(double umsatz)
    {
        this->umsatz += umsatz;
    }
    
    int Kunde::getAnzahl()
    {
        return Kunde::anzahl;
    }
    
    void Kunde::print() const
    {
        cout << "Kunde " << name << " aus " << ort
             << " (ID = " << id << ", " << alter << "Jahre) hatte "
             << transaktion << " Transaktion(en) und " << umsatz << " Euro Umsatz." << endl;
    }
    
    #include "kunde.hpp"
    
    int main() {
        Kunde a("Kunde 1");
        Kunde meiera("Meier", "Esslingen", 28);
    
        a.print();
        meiera.print();
    
    	return 0;
    }
    

    Ich habs grad einfach mal etwas aufgepeppt. Ich hoffe du stimsmt mir zu, dass das weit einfacher ist als dein Versuch mit dem Speicherverwalten.



  • Kohlerer schrieb:

    // ...
        double umsatz;
    // ...
    

    Yay! again 🤡

    ~captcha: Cholera~



  • Ja, Moneyz und Gleitkommazahlen...



  • Nathan schrieb:

    Schauder schrieb:

    Hör' auf Swordfish.

    Diese Fehler und der aktuelle wären nicht passiert, wenn er std::string verwendet hätte. Und der Code wäre wesentlich kürzer.

    BTW @TE: Kennst du Initialisierungslisten für Konstruktoren?

    und die Lernkurve wäre flacher. Leute, das ist eine ÜBUNG zur Speicherverwaltung.



  • mgaeckler schrieb:

    Nathan schrieb:

    Schauder schrieb:

    Hör' auf Swordfish.

    Diese Fehler und der aktuelle wären nicht passiert, wenn er std::string verwendet hätte. Und der Code wäre wesentlich kürzer.

    BTW @TE: Kennst du Initialisierungslisten für Konstruktoren?

    und die Lernkurve wäre flacher. Leute, das ist eine ÜBUNG zur Speicherverwaltung.

    Ups, hab das nicht gesehen. Sorry.



  • Nathan schrieb:

    Schauder schrieb:

    Hör' auf Swordfish.

    Ist doch wahr...

    Kann es sein, daß Du hier ein Komma hineininterpretierst, das nicht da ist?
    Ich schrieb eindeutig, daß er auf Swordfish hören soll.



  • Schauder schrieb:

    Nathan schrieb:

    Schauder schrieb:

    Hör' auf Swordfish.

    Ist doch wahr...

    Kann es sein, daß Du hier ein Komma hineininterpretierst, das nicht da ist?

    Jup. 😃 Könnte schwören da stand ein Komma. Lag vermutlich am ', das ist dann im Kopf verrutscht. Hätte den Post nicht nebenbei schreiben sollen.



  • mgaeckler schrieb:

    [...] Leute, das ist eine ÜBUNG zur Speicherverwaltung.

    Dann, @Kohlerer, schreib' eine Stringklasse ...


Anmelden zum Antworten