2017-04-01 5 views
-2

Betrachten Sie den folgenden C++ Code für mein Programm: CODEWie kann ich eine Membervariable gleich einer anderen Membervariable machen, die in main() gesetzt ist?

Als ich dieses Programm ausführen, es gibt die folgenden:

** Schokoladenmasse: 41

Schokoladendichte: nan **

Ich möchte, dass das Programm die Volumenvariable geteilt durch die Massenvariable ausgibt. Es scheint, dies richtig zu tun, aber es teilt die initialisierten Werte auf die Variablen in der Objektklasse, anstatt die Werte zu teilen, die den Variablen in der main() - Funktion zugewiesen sind. Wie behebe ich das?

Alle Hilfe wird sehr geschätzt!

+2

Fügen Sie den Code in die Frage ein, nicht über einen Link. – 1201ProgramAlarm

+0

BTW, Dichte ist Masse/Volumen, nicht Volumen/Masse –

Antwort

1

Sie erzählt die Software die „aktualisiert“ Eingang heißt weight, volume und mass aber nie gesagt, die Software seiner density gegeben, um die neuen Werte von volume und mass zu aktualisieren. Der Wert der Dichte wird einmal im Konstruktor berechnet, der nur einmal genannt wird, als Sie das Objekt erstellten (nicht zu erwähnen, dass ich ziemlich nervös bin, wenn Leute Dinge wie 0/0 machen). Brauchen Sie eine separate Funktion, um die Dichte zu aktualisieren und Anruf es.

0

Ich hoffe, dass die folgenden Tipps helfen:

  1. die Verwendung class constructor s Klassenmitglieder initialisieren, deshalb constructors existieren.

  2. Verwenden Sie die vorhandenen Setter zum Aktualisieren der density. Jedes Mal, wenn setMass oder setVolume aufgerufen wird, die density neu berechnen.

  3. Wenn Sie Division verwenden, stellen Sie sicher, dass Sie nicht teilen von 0

  4. initialisieren Variable mit Konstanten vom richtigen Typ. 0 ist standardmäßig vom Typ int, während 0.0 vom Typ double ist.

0

Ok gibt es einen Fehler in Ihrem Programm ... Ändern Sie diese Zeile:

Double getDensity()const{return density;} 

An:

Double getDensity(){density=volume/mass;return density;} 

Und ersetzen:

Double density = volume/mass; 

zu :

Double density; 

Das nächste Mal bitte Code einfügen. Screenshots funktionieren nicht ...

Verwandte Themen