2013-12-10 23 views
2

正在爲類進行分配。收到此錯誤信息:找不到未解析的外部符號(C++)

1>------ Build started: Project: Mulvihill_Program_7, Configuration: Debug Win32 ------ 
    1>Mulvihill_Program_7.obj : error LNK2019: unresolved external symbol "double __cdecl calcGross(void)" ([email protected]@YANXZ) referenced in function _main 
    1>c:\users\pat\documents\visual studio 2012\Projects\Mulvihill_Program_7\Debug\Mulvihill_Program_7.exe : fatal error LNK1120: 1 unresolved externals 
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

這裏是代碼:

#include<iostream> 
using namespace std; 

int getHoursWorked(); 
double getPayRate(); 
double calcGross(); 

int hoursWorked = 0; 
double payRate = 0.0; 
double grossPay = 0.0; 
double OVERTIME = 1.5; 
double overTimePayRate = 0.0; 
double pay = 0.0; 



int main() 
{ 

    getHoursWorked(); 
    getPayRate(); 
    pay = calcGross(); 

    cout<<pay; 
} 

int getHoursWorked() 
{ 
    cout<<"Enter the amount of hours worked "; 
    cin>>hoursWorked; 

    return(hoursWorked); 
} 

double getPayRate() 
{ 
    cout<<"How much do you make an hour? "; 
    cin>>payRate; 

    return(payRate); 

} 

double calcGross(int hoursWorked, double payRate) 
{ 
    if (payRate < 40) 
    { 
     grossPay = hoursWorked * payRate; 
    } 
    else 
    { 
     overTimePayRate = OVERTIME * payRate; 
     grossPay = hoursWorked * overTimePayRate; 
    } 
    return(grossPay); 
} 

我知道有可能是多了很多錯誤與此代碼不僅僅是在公約方面的錯誤,和東西,但我新的在這,我只是想了解現在的錯誤消息。

+0

'calcGross'有兩個參數還是沒有?你的代碼似乎無法做出決定。 –

回答

1

鏈接器無法找到這個函數的定義,

double calcGross(); 

,因爲您定義的功能,例如,

double calcGross(int hoursWorked, double payRate) 

如果您刪除,這樣函數聲明&定義匹配的參數。 改變你的函數聲明是這樣,

int getHoursWorked(); 
double getPayRate(); 
double calcGross(int hoursWorked, double payRate); 

main()

+0

我不需要把我想要傳入的變量放入calcGross(paramaterList)函數中嗎? –

+0

@ user3085359:所以你必須改變你的函數聲明。 – David

+0

函數原型必須與函數定義相匹配。在這種情況下,您可能想要更改原型(頂部)以匹配實際的函數定義(底部)。 – fileoffset

0

你calcGross()的定義具有與被稱爲主的一個不同類型的簽名調用它時再通hoursWorked & payRate值()。 main()在沒有任何參數的情況下調用calcGross(),這是一個與calcGross()完全不同的函數,它帶有兩個參數 - int和double。

只需添加

double calcGross() 
{ 
    // replace with your logic 
    return 0.0; 
} 

的代碼,你將得不到任何鏈接錯誤。或者向calcGross(int,double)定義提供所需的參數。

有關更多詳細信息,請參閱type signature