Überladene Funktion unterscheidet sich nur hinsichtlich des Rückgabetyps



  • Uhm... wie nu? ich hab sie 2 x als string definiert (diesen Fall hatte ich schonmal und der hat auch funktioniert), dann einmal als int und einmal als double. beides ist auch so in der header datei.

    Sorry aber ich versteh euren hinweis leider nicht, hab wohl n brett vorm kopf?



  • In dem was Du uns gepostet hast, hast Du getQuantity im Header einmal als int deklariert, und im Codefile einmal als string definiert.



  • huh? ich habs doch jeweils als int deklariert?

    invoice.cpp

    Invoice::Invoice( string number, string description, int quantity, double ppi )
    .
    .
    .
    void Invoice::setQuantity( int quantity )
    {
       quantity = quantity;
    }
    
    string Invoice::getQuantity()
    {
       return quantity;
    }
    

    invoice.h

    Invoice ( string, string, int, double );
    .
    .
    .
    .
    int getQuantity();
    

    Ich versteh nicht wo ich es als string definiert haben sollte?



  • Sag mal bist Du blind?

    ThaRealMatix schrieb:

    /* -> */ string /* <- */ Invoice::getQuantity()
    {
       return quantity;
    }
    


  • oops 😞 manchmal sieht man den wald vor lauter bäumen nicht 😞

    Programm läuft nun, aber seltsamerweise gibt das Programm bei der anzahl eine ziemlich große negativ zahl aus (-858993460), obwohl 23 wohl eine Integer Zahl ist oder?

    Invoice invoice1( "123.h3" ,  "Hammer Typ 3", 23 , 12.95);
    


  • Was macht wohl

    void Invoice::setQuantity( int quantity ) 
    { 
       quantity = quantity; 
    }
    

    ???



  • äh ja... wie doof 😞

    Es funktioniert jetzt. Jetzt müsste ich nur noch eine Sache umsetzen, da bin ich aber überfragt ob ich das nun mit ner klassenfunktion umsetzen muss, schätze aber mal ja.

    Wie kann ich nun die pricePerItem und quantity multiplizieren?

    void Invoice::setInvoiceAmount()
    {
    	invoiceAmount= PricePerItem * quantity;
    }
    
    double Invoice::getInvoiceAmount()
    {
       return invoiceAmount;
    }
    

    gehts ja leider nicht 😞

    Sie sind in der header mit

    void setInvoiceAmount (double);
    double getInvoiceAmount();
    

    deklariert.



  • Die set-Methode benötigst du vermutlich gar nicht, da sich der Wert aus den vorhandenen Attributen errechnen lässt (du könntest höchstens den übergebenen Wert faktorisieren und auf Preis und Anzahl verteilen). Und in der get-Methode berechnest du das Produkt und gibst es direkt aus:

    double Invoice::getInvoiceAmmount()
    { return PricePerItem*quantity; }
    

    PS: Übrigens ist es nicht nötig, daß du im Ctor unbedingt über die Setter gehst - der hat auch direkten Zugriff auf die Member-Variablen.



  • many thx... aber mal nebenbei.. was meint ihr mit ctor? irgendwie kann ich mich nicht erinnern den begriff in vorlesung oder buch bereits angetroffen zu haben (ich bin im buch nun aber auch noch nicht soooo weit)



  • Ctor = Constructor = Invoice::Invoice(...)

    (und da es hier auch recht häufig auftaucht - Dtor ist der Destructor)


Anmelden zum Antworten