簡體   English   中英

未解決的外部符號調用功能

[英]Unresolved External Symbol calling function

我正在為類分配作業,因此這只是代碼的一部分,但是每當我嘗試對其進行編譯時,都會出現此錯誤。

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;}
}

您的前向聲明是

void bestbuy(double, double, double);

而您對定義的嘗試是

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

它們顯然是指兩個不同的功能。 這兩個簽名必須匹配,要么刪除引用,要么將它們添加到正向聲明中。 您現在正在做的事情是向前聲明一個函數並為該未定義函數定義一個重載。

您將函數聲明為采用值,但將其定義為采用引用。 將聲明更改為void bestbuy(double&, double&, double);

您的函數聲明與您的函數定義不匹配。

如下更新:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM