Übergeben Sie die Objekte der Klasse in die Funktion Parameter c++

Habe ich gelesen, einige der zuvor gestellten Fragen zu diesem Thema, aber kann nicht scheinen, um die Antwort zu finden, was ich Suche. Wenn ich das Programm starte erhalte ich keine Fehler, aber ich bekomme eine Menge Datenmüll. Ich weiß, es ist weil ich bin nicht die übergabe der Parameter Recht, aber ich bin neu in c++ und speziell, wie die Verwendung von Zeigern richtig. Es einfach zu machen: ich bin vorbei ein Mitarbeiter-Objekt durch PrintCheck() fordert die CalcSalary() - Funktion, die verwenden müssen GetHours() und GetWage() Zugang member-Daten zu tun, die Berechnungen und die Rückgabe der richtige salary. Würde schätzen, irgendwelche Erklärungen, warum ich bin, Erzeugung von Datenmüll!

Ich habe eine Klasse:

class Employee
{
private:
    int employeeNumber;
    string name;
    string streetAddress;
    string phoneNumber;
    double hourlyWage;
    double hoursWorkedperWeek;
public:
    Employee(void);
    Employee(int, string, string, string, double, double);
    int GetEmployeeNum() const;
    void SetEmployeeNum(int);
    string GetName() const;
    void SetName(string);
    string GetAddress() const;
    void SetAddress(string);
    string GetPhone() const;
    void SetPhone(string);
    double GetWage() const;
    void SetWage(double);
    double GetHours() const;
    void SetHours(double);
    double CalcPay(double, double);
};

Ich habe auch eine Funktion, muss die Interaktion mit der Klasse:

void PrintCheck(Employee&);

Meine main Funktion sieht wie folgt aus:

void main()
{
    Employee joe(1, "Joe Blo", "125 Cool St.", "555 555 5555", 10.00, 45); //create employee 1
    Employee jane(2, "Jane Doe", "521 Dumb St.", "1 800 555 5555", 12.50, 30); //create employee 2
    PrintCheck(joe); //print check
}

Den printcheck-Funktion sieht wie folgt aus:

void PrintCheck(Employee& a)
{

    cout << "Pay to the order of " << a.GetName() << "...................................";
    cout << a.CalcPay(a.GetWage(), a.GetHours()) << endl;
    cout << "Hours worked: " << a.GetHours() << endl;
    cout << "Hourly wage: " << a.GetWage() << endl;
}

Calcpay Funktion:

double Employee::CalcPay(double h, double w)
{
    double salary = 0;
    int OT = 40;
    double timeandahalf = 1.5;
    double STATE = .075;
    double FED = .20;
    if (h > OT) //overtime
    {
        salary = h * (w * timeandahalf); //calc time and a half
        salary = salary * STATE; //calc state deductions
        salary = salary * FED; //calc federal deductions
    }
    else 
    {
        salary = h * w; //calc salary
        salary = salary * STATE; //calc state deductions
        salary = salary * FED; //calc federal deductions
    }
    cout.setf(ios::fixed);
    cout.setf(ios::showpoint);
    cout.precision(PRECISION);
    return salary;
}

Meine "get" - Funktionen alle Folgen diesem Muster:

int Employee::GetEmployeeNum() const
{
    return employeeNumber;
}

Meine erwartete Ausgabe wäre:

Pay to the order of:  Joe Blo............ $salary.
Hours worked: $hours.
Hourly wage: $wage.

Was ich habe:

Pay to the order of: ........................ 128509280503000000000000000000000000000.00 (this number is long, but I didn't feel like typing them all)
Hours worked: -9723636237 (same, just tons of bs numbers)
Hourly wage: (the exact same number as above)

Meiner Klasse-Konstruktor:

Employee::Employee(int en, string n, string a, string p, double w, double h)
{
    int employeeNumber = en;
    string name = n;
    string streetAddress = a;
    string phoneNumber = p;
    double hourlyWage = w;
    double hoursWorkedperWeek = h;
}
Employee::Employee()
{
}
Warum gehst du nicht zählen, zu welchen Leistungen Sie erwarten und was Sie tatsächlich in Ihrer Frage?
Was bedeutet die Umsetzung für den Konstruktor Employee(int, string, string, string, double, double) Aussehen?
Sehen Sie Ihre Sprache. Ich werde Bearbeiten, es für Sie dieses mal aber in die Zukunft kann das ein mod löschen Sie Ihre post-ohne auch nur zu Blinzeln.
Wird der Konstruktor korrekt init ' Ing der Instanz?
Sorry über die Sprache, Sie wissen, wie frustrierend Fehler sein kann! Bearbeitete ich in meinem Konstruktor an der Unterseite der post.

InformationsquelleAutor xavi | 2013-09-16

Schreibe einen Kommentar