$truct und cla$$ Problem! brauhce hilfe!



  • hallo!

    struct Product
    {
    	double cost; // Kosten in EURO
    
    	void setCost(double cost_C) { cost = cost_C; }
    };
    
    class Konto
    {
    private:
    	double konto_now;
    	double konto_new;
    	//Product price; -> Hier .. das möchte ich hier definieren
    	double price;
    public:
    	double f_
    	double f_konto_new(double);
    };
    
    double Konto::f_konto_new(double konto_new)
    {
    	konto_new = konto_now - price;
    	konto_new = konto_new;
    	return konto_new;
    }
    

    ich möchte also in der Klasse Product einen Wert für "cost" also durch setCost machen und dann den Wert von "cost" in der Klasse Konto benutzen.

    kann mir jemand bitte helfen? 😉

    cu



  • So wie du es angedeutet hast, ist es schon richtig:

    Product price;
    

    Du mußt dann natürlich die double Variable entfernen.

    Und Zugriff auf die Struktur erhältst du dann mit dem Punkt-Operator:

    konto_new = konto_now - price.cost;
    

    Und wenn du dann noch eine Getter-Funktion implementierst, dann sieht es schon ganz gut aus:

    struct Product
    {
        double getCost() const { return cost; }
        void setCost(double cost_C) { cost = cost_C; }
    
    private: // von außen kein Zugriff saruf
        double cost; // Kosten in EURO
    };
    

    Nur wo du jetzt in deinem Programm die Kosten setzt, kann ich dir nicht sagen...



  • Th schrieb:

    Und Zugriff auf die Struktur erhältst du dann mit dem Punkt-Operator:

    konto_new = konto_now - price.cost;
    

    [/cpp]

    Danke!

    genau das mit dem Punktoperator habe ich gesucht.

    ich habs zwar schon viel früher benutzt, hab es aber nach den Ferien wieder vergessen 😃

    DANKE!

    mfg 😉



  • Hi,

    nur noch als Nachtrag: Ich würde dringend davon abraten, für Geldbeträge Fließkommatypen (double, float, ...) zu nehmen. Da fängt man sich blöde Rundungsfehler ein, die vollkommen unnötig sind.
    Besser: Betrag in Cent als Ganzkommatyp...

    Außerdem sollte man sich gleich überlegen, ob "negative Preise" erlaubt sein sollen und ggf. auf einen unsigned Typ wechseln ....

    Gruß,

    Simon2.



  • Sinnvoll könnte es auch sein den Betrag als ein unsigned int in Cent zu speichern. getEuro() würde dann diesen Betrag durch 100 teilen und getCent() den Rest berechnen. Ist etwas langsamer nimmt aber weniger Speicherplatz ein, aber das sollte bei so einem Programm eh alles vernachlässigbar sein

    Gruß
    Don06


Anmelden zum Antworten