2017-08-10 27 views
-2

Wie initialisiere ich convert.gram? Immer wenn ich in der Klassendeklaration "Gramm" definiere, reagiert das Programm entsprechend. Ich versuche, Gramm in den Konstruktor zu setzen, aber es funktioniert nicht. Strukturiere ich auch alles richtig? Danke für die Hilfe!Die Variable benötigt einen Initialisierer C++?

Code:

#include <stdio.h> 
#include <string.h> 
#include <iostream> 
#include <stdlib.h> 
#include <windows.h> 
#include "math.h" 

using namespace std; 

struct grams{ 
    grams(); 
    float converter(float pounds); 

    float gram; 
    float pounds; 
    float answer; 
    }; 

    float grams::converter(float pounds){ 
    answer = pounds * gram; 
    return answer; 
    } 

    grams::grams(){ 
    float convert.gram = 453.592; 
    } 

int main(){ 
    float PtC; 
    grams convert; 

    cout<<"Pound to Gram Converter \n"; 
    cout<<"How Many Pounds Do You Want to Convert? \n"; 

    cin>>PtC; 

    float converter = convert.converter(PtC); 

    cout<<"Answer = "<<converter<<endl; 

return 0; 
} 

Fehler:

C:/Users/lisa/Desktop/codelight c++/time_of_for_loop/for_loop_time/for_loop_time/main.cpp:31:13: error: expected initializer before '.' token 
+4

'float convert.gram = 453.592;' was willst du hier machen? – vu1p3n0x

+0

@ vu1p3n0x Das Programm konvertiert Pfund in Gramm. Ich werde das Programm erweitern, also möchte ich es mit Klassen organisieren. Ich habe Probleme mit dieser Linie. Die Zeile soll "gram" im Konstruktor auf 453.592 setzen, wenn eine neue Instanz von Gramm konvertiert wird. –

Antwort

1

Was Sie tun müssen, wird nur gram; convert ist eine Instanz von grams, so dass das Feld korrekt eingestellt wird.

grams::grams(){ 
    gram = 453.592; 
} 

Aber je mehr konventionelle und performante Art und Weise der Teilnehmer zu initialisieren ist ein Mitglied Initialisiererliste zu verwenden, etwa so:

grams::grams() : gram(453.592) { 

} 

Auch ein kleiner Rat: Weil Sie gram als verwenden Konstante, es wäre sinnvoller, sie als Konstante anstatt als Mitglied zu setzen. Sie können es als ein statisches Element gesetzt (und nennen Sie es besser)

struct grams { 
    static const float GRAMS_PER_POUND = 453.592; 
    ... 

Sie sind auch nicht das Mitglied pound überhaupt verwendet wird; Sie sollten darüber nachdenken, es zu entfernen. Es macht auch wenig Sinn, answer zu speichern, weil Sie es nicht über convert verwenden, nachdem die converter-Funktion abgeschlossen ist.

Verwandte Themen