2013-04-02 59 views
0

我的参考参数有问题。 getStockInfo中的值应该存储在参考参数中。我不知道如何做到这一点,以便displayStatus接受这些作为参数。每当我把一些东西放入getStockInfo,它会给我错误More than one onstance of overloaded function "getStockInfo" matches the argument listC++参考参数函数

#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) 
{ 
} 
+2

在你的代码看getStockInfo'的'两个地和比较。 – chris

+1

看看它们的函数原型,以及实际的定义。他们不平等。 –

回答

1

你的宣言和getStockInfo定义不同:在一个最后一个参数是一个参考,在其他事实并非如此。

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

类似的问题发生在displayStatus:这里参数的数量是不同的。发生

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

该错误消息,因为编译器不能确定是否正在告诉它调用getStockInfo(int &, int&, double&)(其可以来自另一文件)或在此文件void getStockInfo(int &, int&, double)定义的一个。

注意有多个版本不是“错误的”。但是,以编译器不知道要调用哪一个的方式调用它。

0

原型中的参数列表与定义中的参数列表不匹配。

void displayStatus(int &, double &); 

VS

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