好吧所以我完成了我的计划,基本上只计算3名员工的工作时间,没有太复杂。但是,现在我完成了,我收到两条错误消息。第一个说:
表达式必须是可修改的左值。
这是指在x.hours
函数下使用Addsomethingup
。第二条错误消息说:
'=':左操作数必须是l值。
这也表示它与iTotal_hours
函数下的Addsomethingup
行有关。我不太熟悉使用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 Center\n\n";
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; \n\n";
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; \n\n";
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; \n\n";
cin >> thirdEmployee.wage;
firstEmployee.ImplementCalculations();
secondEmployee.ImplementCalculations();
thirdEmployee.ImplementCalculations();
totalEmployee.Addsomethingup(firstEmployee, secondEmployee, thirdEmployee);
}
答案 0 :(得分:4)
您的问题是
iTotal_hours = x.hours + y.hours = z.hours;
operator precendece表示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_salaries
和iTotal_OvertimeHours