未解析的外部符号调用功能

时间:2011-11-04 16:27:17

标签: c++

我正在为类分配工作,所以这只是代码的一部分,但每当我尝试编译它时,我都会收到此错误。

1>pass9.obj : error LNK2019: unresolved external symbol "void __cdecl bestbuy(double,double,double)" (?bestbuy@@YAXNNN@Z) referenced in function _main
1>C:\Users\YoggieBear\Desktop\school\pass9\Debug\pass9.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;}
}

3 个答案:

答案 0 :(得分:0)

您的前瞻声明是

void bestbuy(double, double, double);

你的定义尝试是

void bestbuy(double &val1,double &val2, double val3)

他们显然指的是两种不同的功能。两个签名都必须匹配,要么删除引用,要么将它们添加到前向声明中。你现在正在做的是向前声明一个函数并为那个未定义的函数定义一个重载。

答案 1 :(得分:0)

您将该函数声明为取值,但将其定义为参考。将声明更改为void bestbuy(double&, double&, double);

答案 2 :(得分:0)

您的函数声明与函数定义不匹配。

按以下方式更新:

void bestbuy(double&, double&, double);