c++ reference parameters functions [closed]

纵然是瞬间 提交于 2019-12-12 03:57:04

问题


Im having trouble with the reference parameters. The values in getStockInfo are supposed to be stored in reference parameters. I dont know how to do that so that displayStatus accepts those as arguments. Whenever i put something into getStockInfo in main it gives me the error More than one onstance of overloaded function "getStockInfo" matches the argument list.

#include <iostream>
#include <iomanip>
using namespace std;

void getStockInfo(int &, int&, double&);
void displayStatus(int &, double &);

int main()
{
   int spoolsOrdered;
   int spoolsStock;
   double specialCharges;

   cout << "Middletown Wholesale Copper Wire Company" << endl;

   getStockInfo(spoolsOrdered, spoolsStock, specialCharges);
}

void getStockInfo(int &spoolsOrdered, int &spoolsStock, double specialCharges)
{
   char ship; 

   cout << "How many spools would you like to order: ";
   cin >> spoolsOrdered;

   //Validate the spools ordered 
   while(spoolsOrdered < 1)
   {
      cout << "Spools ordered must be at least one" << endl;
      cin >> spoolsOrdered;
   }

   cout << "How many spools are in stock: ";
   cin >> spoolsStock;

   //Validate spools in stock
   while(spoolsStock < 0)
   {
       cout << "Spools in stock must be at least 0" << endl;
       cin >> spoolsStock;
   }

   cout << "Are there any special shipping charges? ";
   cout << "Enter Y for yes or another letter for no: ";
   cin >> ship;

   //Validate special charges
   if(ship == 'Y' || ship == 'y')
   {
    cout << "Enter the special shipping charge: $";
    cin >> specialCharges;
   }
   else
   {
    specialCharges = 10.00;
   }
}

void displayStatus(int &backOrder, double &subtotal, double &shipping, double &total)
{
}  

回答1:


Your declaration and definition of getStockInfo differ: The final parameter in one is a reference and in the other it is not.

void getStockInfo(int &, int&, double&);
...
void getStockInfo(int &spoolsOrdered, int &spoolsStock, double specialCharges)

A similar issue occurs with displayStatus: Here the number of parameters is different.

void displayStatus(int &, double &);
...
void displayStatus(int &backOrder, double &subtotal, double &shipping, double &total)

The error message occurs since the compiler can't determine whether you are telling it to call getStockInfo(int &, int&, double&) (which may come from another file) or the one defined in this file void getStockInfo(int &, int&, double).

Note having multiple versions is not "wrong". However calling one in a way that the compiler doesn't know which one to call is.




回答2:


Your parameter list in the prototype doesn't match the one in the definition.

void displayStatus(int &, double &);

vs

void displayStatus(int &backOrder, double &subtotal, double &shipping, double &total)
{
}  


来源:https://stackoverflow.com/questions/15755391/c-reference-parameters-functions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!