我正在为类赋值,所以这只是代码的一部分,但每当我试图编译它时,我都会得到这个错误。
1>pass9.obj : error LNK2019: unresolved external symbol "void __cdecl bestbuy(double,double,double)" (?bestbuy@@YAXNNN@Z) referenced in function _main
1>C:UsersYoggieBearDesktopschoolpass9Debugpass9.exe : fatal error LNK1120: 1 unresolved externals
代码在
下面#include <iostream>
using namespace std;
void bestbuy(double, double, double);
void discountresults (double, double);
void howmany(double, double);
int price1, price2, price3;
int main ()
{
cout<<"Please enter 3 prices.n";//This tests function bestbuy.
cin>>price1>>price2>>price3;
bestbuy(price1,price2,price3);
cout<<"Your lowest price entered was "<<price1<<" and it was the "<<price2<<" number you entered.n";
system ("PAUSE");
return 0;
}
void bestbuy(double &val1,double &val2, double val3)
{
if (val1 < val2 && val1 < val3)
val2 = 1;
else if (val2 < val1 && val2 < val3)
{val1 = val2;
val2 = 2;}
else
{val1 = val3;
val2 = 3;}
}
您的函数声明与函数定义不匹配。
更新如下:
void bestbuy(double&, double&, double);
您的前向声明是
void bestbuy(double, double, double);
而你试图定义的是
void bestbuy(double &val1,double &val2, double val3)
它们显然指的是两个不同的函数。两个签名必须匹配,要么删除引用,要么也将它们添加到forward声明中。你现在所做的就是向前声明一个函数,并为这个未定义的函数定义一个重载。
将函数声明为接受值,但将其定义为接受引用。将声明改为void bestbuy(double&, double&, double);