was mache ich falsch? (klasse, konstruktor)



  • Sirius7 schrieb:

    welche Zeilen sollen relevant sein? ich kann noch editieren und die unwichtigen rausnehmen. es geht nur um wertezuweisung mittels allgemein konstruktor

    Kannst du vielleicht mal erklären, was genau du erwartet hast und was nicht mit deinen Erwartungen übereinstimmt? Wenn ich so den Code sehe, erkenne ich nicht wo dein Problem liegt... 🙄



  • ich habe eigentlich erwartet, dass ich die Werte für brüche per allgemein Konstruktor in main fuktion eingeben kann.
    ungefähr so:

    Ratio a (34,45); // hier möchte ich Werte eingeben (Bruch 1) 
    Ratio b (45,78); // hier möchte ich Werte eingeben (Bruch 2)
    

    doch bei der ausgabe werden irgendwelche komische werte mit -348984334 oder so angezeigt. Kann mein Fehler nicht finden, und hab daher auch das ganze prog. einfach gepostet



  • Ratio::Ratio (int zaehler, int nenner)
        {   
            zaehler=45;
        nenner=34;
        }
    

    Dabei werden den beiden Parametern diese Werte zugewiesen, weil die genauso heißen wie die Member. Abhilfe schafft this->

    Ratio::Ratio (int zaehler, int nenner)
        {   
            this->zaehler=45; //was soll das eigentlich? meintest wohl zaehler = zaehler? dann wäre dir der fehler wohl auch aufgefallen
        this->nenner=34;
        }
    

    Noch besser wäre aber das initialisieren mit einer Initialisierungsliste:

    Ratio::Ratio(int n, int z) : nenner(n), zaehler(z) {}
    

    Wenn du nicht wießt, was das ist, google es einfach mal.



  • perfekt das funzt!)) vielen Dank! 🙂
    hab solche code benutzt

    Ratio::Ratio (int zaehler, int nenner) 
        {   
            this->zaehler=zaehler; 
    	this->nenner=nenner; 
        }
    


  • Aber für solche Zuweisungen ist wirklich die Initialisierungsliste besser geeignet. Verwende die also und setzte dich kurz mit ihr auseinander.
    So erkennt man nämlich sofort, wo was initialisiert und wo was anderes gemacht wird. Es wäre vollkommen unlogisch, sie nicht zu verwenden, da sie eben genau dafür gemacht wurde 😃
    Gewöhn dir also solche Zuweisungen im Konstruktor ab und benutz ne Initialierungsliste, wie das geht hab ich dir ja schon gezeigt.



  • alles klar, mache ich auf jeden Fall, sieht auch viel vernünftiger aus) vielen dank noch mal! 🙂



  • Incocnito schrieb:

    Aber für solche Zuweisungen ist wirklich die Initialisierungsliste besser geeignet.

    Hier macht es absolut keinen Unterschied. Initialisierungslisten sind sinnvoll für Klassen, Konstanten (wo es ein muss ist) o.ä. im Allgemeinen sollte man sich nicht immer gleich für eine Initialisierungsliste Entscheiden, manchmal sind auch einfache Funktionen besser (wenn du z.B. mehr als 10 Objekte initialisieren musst), die das Objekt dann auch gleich konfigurieren.


  • Mod

    Hacker schrieb:

    Incocnito schrieb:

    Aber für solche Zuweisungen ist wirklich die Initialisierungsliste besser geeignet.

    Hier macht es absolut keinen Unterschied. Initialisierungslisten sind sinnvoll für Klassen, Konstanten (wo es ein muss ist) o.ä. im Allgemeinen sollte man sich nicht immer gleich für eine Initialisierungsliste Entscheiden, manchmal sind auch einfache Funktionen besser (wenn du z.B. mehr als 10 Objekte initialisieren musst), die das Objekt dann auch gleich konfigurieren.

    😕 Warum? Die Initialisierungsliste ist niemals die schlechtere Wahl.



  • SeppJ schrieb:

    Hacker schrieb:

    Incocnito schrieb:

    Aber für solche Zuweisungen ist wirklich die Initialisierungsliste besser geeignet.

    Hier macht es absolut keinen Unterschied. Initialisierungslisten sind sinnvoll für Klassen, Konstanten (wo es ein muss ist) o.ä. im Allgemeinen sollte man sich nicht immer gleich für eine Initialisierungsliste Entscheiden, manchmal sind auch einfache Funktionen besser (wenn du z.B. mehr als 10 Objekte initialisieren musst), die das Objekt dann auch gleich konfigurieren.

    😕 Warum? Die Initialisierungsliste ist niemals die schlechtere Wahl.

    Was ich meinte war, dass man nicht penibel auf das benutzen von Initialisierungslisten achten sollte, an Stellen wo es sowieso keinen Unterschied macht, so wie hier. Und das mit dem niemals: du meinst, dass man jeden Member mit der Initialisierungsliste initialisieren sollte (das wäre nähmlich manchmal hässlich, außer vielleicht eine Default-Initialisierung)?



  • Natürlich sollte man darauf achten. Wenn man initialisieren will, nimmt man die Initialisierungsliste.



  • cooky451 schrieb:

    Natürlich sollte man darauf achten. Wenn man initialisieren will, nimmt man die Initialisierungsliste.

    -.-. Gut gut, habt schon Recht. Jetzt wo ich es bemerke, meinte ich etwas eigentlich eher zusammenhangloses...


Anmelden zum Antworten