2013-05-26 102 views
0

下面是一個.cpp文件,我將其包含在另一個.cpp文件中。我收到一個錯誤,指出emp.grosPay()必須是一個可修改的左值。任何想法修復它?必須是可修改的值錯誤?

#include <iostream> 
#include <string> 
#include "weeklyEmp.h" 

using namespace std; 

const double WEEKLY_ALLOWANCE = 39.42; 
const double FICA_TAX_RATE = 0.0765; 
weeklyEmp::weeklyEmp() 
{ 
    my_name = ?name?; 
} 
weeklyEmp::weeklyEmp(string initName, 
    double initHours, 
    double initRate, 
    int initExemptions, 
    string initFilingStatus) 
{ 
    my_name; initName; 
    my_hours; initHours; 
    my_rate; initRate; 
    my_exemptions; initExemptions; 
    my_filingStatus; initFilingStatus; 
} 

//--modifiers 

void weeklyEmp::set_hours(double thisWeeksHours) 
    //post: Set the hours worked for a given week 
{ 
    my_hours = thisWeeksHours; 
} 



void weeklyEmp::set_rate(double thisWeeksRate) 
//post: Change the employee's hourly rate of pay 
{ 
my_rate = thisWeeksRate; 
} 

//--accessors 
double weeklyEmp::grosPay() const 
//post: Return gross pay with overtime 

{if(my_hours <=40) return my_hours * my_rate; 
else 
return (40*my_rate) + (my_hours-40) * 1.5 * my_rate; 
} 

double weeklyEmp::incomeTax() const 
//post: Return the federal income tax 
{ 
double result(0.0); 
double taxableIncome(grosPay() - my_exemptions * WEEKLY_ALLOWANCE); 
if(my_filingStatus == "S" || my_filingStatus == "s") 
{ 
if (taxableIncome <= 23.00) 
result = 0.00; 
else if(taxableIncome <= 397.00) 
result = 0.15 * (taxableIncome - 23.00); 
else if(taxableIncome <= 928.00) 
result = 56.10 + 0.28 * (taxableIncome - 397.00); 
else if(taxableIncome <= 2121.00) 
result = 204.78 + 0.33 * (taxableIncome - 928.00); 
else 
result = 598.47 + 0.28 * (taxableIncome - 2121.00); 
} 
if(my_filingStatus == "M" || my_filingStatus == "m") 
{ 
if(taxableIncome <= 65.00) 
result = 0.00; 
else if(taxableIncome <= 689.00) 
result = 0.15 * (taxableIncome - 65.00); 
else if(taxableIncome <= 1573.00) 
result = 93.60 + 0.28 * (taxableIncome - 689.00); 
else if(taxableIncome <= 3858.00) 
result = 341.12 + 0.33 * (taxableIncome - 1573.00); 
else 
result = 1095.17 + 0.28 * (taxableIncome - 3858.00); 
} 
/* round to the nearest penny */ 
/* include compfun.cpp for round function */ 
result =(result, 2); 
return result; 
} 

double weeklyEmp::FICATax() const 
//post: Return the social security tax 
{ 
    return grosPay() * FICA_TAX_RATE; 
} 

string weeklyEmp::name() const 
//post: Return the employee's name 

{ return my_name; 

} 

的代碼有錯誤的部分是下面,標誌着* **

int main() 
{ 
    string name; 
    double rate; 
    double hours; 
    int exemptions; 
    string filingStatus; 


    cout <<"Name: "; 
    cin >> name; 
    cout << "Hourly Rate:"; 
    cin >> rate; 
    cout << "Hours Worked:"; 
    cin >> hours; 
    cout << "Exemptions: "; 
    cin >> exemptions; 
    cout<< "S) ingle/M) arried: "; 
    cin >> filingStatus; 
    cout << " " << endl; 

    weeklyEmp emp(name, hours, rate, exemptions, filingStatus); 
    double net = ***emp.grosPay()*** = emp.incomeTax() - emp.FICATax(); 

} 
+0

'grosPay()'返回一個右值,你不能指定給它。這條線的意圖是什麼? –

+0

什麼是my_name =?名稱? – chris

+0

我加了「?name?」這是一個錯別字 –

回答

0
double net = emp.grosPay() = emp.incomeTax() - emp.FICATax(); 
//      ^^^ 

grosPay不返回的引用,所以我假設你沒有意思是在那裏使用=標誌。可能是一個大拇指。

您是不是要找使用減號來-

double net = emp.grosPay() - emp.incomeTax() - emp.FICATax(); 
//      ^^^ 

錯誤發生在,因爲你不能修改const對象,由const函數返回的對象,或者說」不是個右值t綁定到一個非const的右值引用。

+0

這就是它。謝謝。 –

+0

@ user2395688沒問題。:) – 0x499602D2

+0

共識不僅在解決方案上,而且在使用插入符號。 –

0
double net = ***emp.grosPay()*** = emp.incomeTax() - emp.FICATax(); 
           ^^^ 

第二個'='應該是' - '符號;我認爲你想要減去,而不是分配。

相關問題