C++对象函数错误消息

C++ Object Function Error Message

本文关键字:消息 错误 函数 对象 C++      更新时间:2023-10-16

好吧,所以我完成了我的程序,基本上只是计算 3 名员工的工作时间,没有什么太复杂的。但是,现在我已完成,我收到两条错误消息。第一个说:

表达式必须是可修改的左值。

这是指在Addsomethingup功能下使用x.hours。第二条错误消息说:

'

=':左操作数必须是 L 值。

这也说明它与Addsomethingup函数下的那条iTotal_hours行有关。我不太熟悉使用C++的课程,所以如果有人可以提供一些建议,我将不胜感激。

#include "stdafx.h"
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

class EmployeeClass {
public:
    string EmployeeName;
    int hours;
    float wage;
    float basepay;
    float salary;
    int overtime_hours;
    float overtime_pay;
    float overtime_extra;
    float iTotal_salaries;
    float iIndividualSalary;
    int iTotal_hours;
    int iTotal_OvertimeHours;
    void ImplementCalculations() {
        overtime_hours = 0;
        overtime_pay = 0;
        overtime_extra = 0;
        if (hours > 40) {
            overtime_hours = hours - 40;
        }
        else {
            overtime_hours = 0;
        }
        basepay = 40 * wage;
        overtime_pay = wage * 1.5;
        overtime_extra = overtime_pay * overtime_hours;
        salary = overtime_extra + basepay;
    }
    void DisplayEmployInformation(void) {       
        cout << "Employee Name ............. = " << EmployeeName << endl <<
            "Base Pay .................. = " << basepay << endl <<
            "Hours in Overtime ......... = " << overtime_hours << endl <<
            "Overtime Pay Amount........ = " << overtime_pay << endl <<
            "Total Pay ................. = " << salary << endl;
    }
    void Addsomethingup(EmployeeClass x, EmployeeClass y, EmployeeClass z) {
        iTotal_salaries = 0;
        iTotal_hours = 0;
        iTotal_OvertimeHours = 0;
        iTotal_salaries = x.wage + y.wage + z.wage;
        iTotal_hours = x.hours + y.hours = z.hours;
        iTotal_OvertimeHours = x.overtime_hours + y.overtime_hours + z.overtime_hours;
        cout << " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%n" <<
            "%%%% EMPLOYEE SUMMARY DATA%%%%%%%%%%%%%%%%%%%%%%%n" <<
            "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%n" <<
            "%%%% Total Employee Salaries ..... = " << iTotal_salaries << endl <<
            "%%%% Total Employee Hours ........ = " << iTotal_hours << endl <<
            "%%%% Total Overtime Hours......... = " << iTotal_OvertimeHours << endl <<
            "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%n" <<
            "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" << endl;
    }
};
int main()
{
    system("cls");
    cout << "nWelcome to the Employee Pay Centernn";
    EmployeeClass firstEmployee;
    EmployeeClass secondEmployee;
    EmployeeClass thirdEmployee;
    EmployeeClass totalEmployee;
    cout << "Please enter the first Employees name: n";                                //First employees input
    cin >> firstEmployee.EmployeeName;
    cout << "Please enter " << firstEmployee.EmployeeName << "'s hours worked: n";
    cin >> firstEmployee.hours;
    cout << "Please enter " << firstEmployee.EmployeeName << "'s hourly wage; nn";
    cin >> firstEmployee.wage;

    cout << "Please enter the second Employees name: n";                               //Second emlpoyee input
    cin >> secondEmployee.EmployeeName;
    cout << "Please enter " << secondEmployee.EmployeeName << "'s hours worked: n";
    cin >> secondEmployee.hours;
    cout << "Please enter " << secondEmployee.EmployeeName << "'s hourly wage; nn";
    cin >> secondEmployee.wage;
    cout << "Please enter the third Employees name: n";                                //Third employees input
    cin >> thirdEmployee.EmployeeName;
    cout << "Please enter " << thirdEmployee.EmployeeName << "'s hours worked: n";
    cin >> thirdEmployee.hours;
    cout << "Please enter " << thirdEmployee.EmployeeName << "'s hourly wage; nn";
    cin >> thirdEmployee.wage;
    firstEmployee.ImplementCalculations();
    secondEmployee.ImplementCalculations();
    thirdEmployee.ImplementCalculations();
    totalEmployee.Addsomethingup(firstEmployee, secondEmployee, thirdEmployee);
}

您的问题与

iTotal_hours = x.hours + y.hours = z.hours;

运算符先验规定x.hours + y.hours发生在y.hours = z.hours之前,因此实际发生的事情是

iTotal_hours = (x.hours + y.hours) = z.hours;

这将不起作用,因为(x.hours + y.hours)会创建一个无法分配的临时对象。

我认为你的意思是拥有+而不是=,这将使它成为它

iTotal_hours = x.hours + y.hours + z.hours;

这与你为iTotal_salariesiTotal_OvertimeHours所做的是一致的