#include <cstdlib>
#include <iomanip>
#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::endl;
using std::string;
using std::setprecision;
using std::fixed;
//function prototypes
void getInput(string &, double);
void calcFedTaxes(double , double, double &, double &);
void calcnetPay(double &, double , double, double);
void displayInfo(string, double, double, double);
int main()
{
//declare constants and variables
const double FWT_RATE = .2;
const double FICA_RATE = .08;
string dname = "";
double dsalary = 0.0;
double dfwtTax = 0.0;
double dficaTax = 0.0;
double dnetPay = 0.0;
//display output in fixed-point notation with two decimal places
cout << fixed << setprecision(2);
//call function to get input and calculate salary and taxes
void getInput(string dname, double dsalary, double dnetPay);
void calcFedTaxes(double Fsalary, double FwtRate, double FicaRate,
double & withholdingTax, double & incomeTax);
void calcnetPay(double & netPay, double weeklySalary, double fwtTax,
double ficaTax);
void displayInfo (string dname, double dfwtTax, double dficaTax,
double dnetPay);
system ("pause");
} //end call function
//*****function definitions*****
void getInput(string iname, double isalary)
{
//enter input items
cout << "Enter name: ";
cin >> iname;
cout << "weekly salary: ";
cin >> isalary;
}
void calcFedTaxes (double Fsalary, double FwtRate, double FicaRate,
double & withholdingTax, double & incomeTax)
{
withholdingTax = Fsalary * FwtRate;
incomeTax = Fsalary * FicaRate;
}
void calcnetPay(double & netPay, double weeklySalary, double fwtTax,
double ficaTax)
{
netPay = weeklySalary - fwtTax - ficaTax;
}
void displayInfo(string dname, double dfwtTax, double dficaTax,
double dnetPay)
{
cout << "name: " << dname;
cout << "With holding Tax: " << dfwtTax;
cout << "With holding Fica: "<<dficaTax;
cout << "Net pay: " <<dnetPay;
cin>> dnetPay;
//end of displayInfo function
return;
}
答案 0 :(得分:5)
您的代码引用了它未提供的功能。 (这只是一个链接错误,因为这些函数很可能是由您可能要链接的其他库提供的。)
(没有发布任何代码)你可能有一个单独的头文件,它定义了getInput和displayInfo的原型。确保getInput和displayInfo的定义与这些原型实际匹配!注意
void getInput(std::string &foo, double &bar)
与
不同void getInput(std::string foo, double bar)
当然还有
void getInpoot(std::string &foo, double &bar)
答案 1 :(得分:3)
随便一眼,我注意到两个明显的错误。
第一个是getInput()
void getInput(string &, double &) ;
void getInput(string iname , double isalary)
原型期望引用,但定义不是。
一旦你看到第二个就更明显了。函数名称在displayInfo()
定义中缺少“a”的简单错字。
void displyInfo(string dname, double dfwtTax, double dficaTax,
double dnetPay)
答案 2 :(得分:1)
在main
,
//call function to get input and calculate salary and taxes
void getInput(string dname, double dsalary, double dnetPay);
void calcFedTaxes(double Fsalary, double FwtRate, double FicaRate,
double & withholdingTax, double & incomeTax);
void calcnetPay(double & netPay, double weeklySalary, double fwtTax,
double ficaTax);
void displayInfo (string dname, double dfwtTax, double dficaTax,
double dnetPay);
不符合你的想法。
你所做的是为函数提供原型。这不会生成任何代码,也不会调用任何函数。
你可能意味着
// call functions to get input and calculate salary and taxes
getInput(dname, dsalary, dnetPay);
double withholdingTax, incomeTax;
calcFedTaxes(dsalary, FWT_RATE, FICA_RATE, withholdingTax, incomeTax);
等等。您尝试调用的这些函数与您实际定义的函数不匹配,您还必须修复这些函数。
答案 3 :(得分:1)
在main()中,您只是原型函数,而不是调用它们:
//call function to get input and calculate salary and taxes
void getInput(string dname, double dsalary, double dnetPay);
定义了一个函数,现在需要调用它:
getInput(dname, dsalary, dnetPay);
那就是说,你的代码令人困惑。让我们看一下代码中对getInput的三个当前引用:
void getInput(string &, double);
void getInput(string dname, double dsalary, double dnetPay);
void getInput(string iname, double isalary) { ... }
你有两个原型,它们都有你的功能定义不同的签名。在你清理干净之前,你将继续遇到麻烦。
答案 4 :(得分:0)
这些不是标准的库函数,你知道它们来自哪里 - 可能是你的环境/编译器中的东西。
您需要链接库,在visual studio中查看properties-&gt; linker-&gt; input-&gt;其他依赖项,在uinx上您必须将'-lnameoflibrary'传递给编译器