2012-04-26 140 views
1

我是C++的新手。我正在为价值传递而挣扎,没有人能以我能理解的方式解释我对我做错了什么。我知道这是我的错,但是我正在寻求我的代码帮助。请帮助!'SalesTaxPct'未在此范围内声明

#include <iostream> 
using namespace std; 

double getValues(); 
double getSalesTax(double SalesTaxPct); 
double gettotal_price(double base, double opt); 
void PrintFinal(double base,double opt,double SalesTaxPct); 

// function to control all other functions 
int main() 
{ 
    getValues(); 
    getSalesTax(SalesTaxPct); 
    PrintFinal(base,pt,SalesTaxPct); 
} 

// function to calculate sales tax percent into decimal 
double getSalesTax(double SalesTaxPct)  

{ 
    double SalesTax; 

    SalesTax = SalesTaxPct/100; 

    return SalesTax; 
} 



// function to find total 
double gettotal_price(double base, double opt, double SalesTax) 

{ 

    return = (base + opt) * (1 + SalesTax); 


} 


// function to show user all values input and also total 
void PrintFinal(double base, double opt, double SalesTaxPct) 

{ 
    cout << "Base vehicle price: $" << base << endl; 

    cout << "Options Price: $" << opt << endl; 

    cout << "Sales tax pct: " << SalesTaxPct << "%" << endl; 

    cout << "Total vehicle price: $" << gettotal_price(double base, double opt, double SalesTax) << endl; 

} 


// function to get input values 
void getValues() 
{ 
    double base, double opt, double SalesTaxPct; 

    cout << "Enter a base vehicle price: " << endl; 
    cin >> base; 

    cout << "Enter options price: " << endl; 
    cin >> opt; 

    cout << "Enter a sales tax percent: " << endl; 
    cin >> SalesTaxPct; 


} 
+0

我真的很喜欢你如何将所有输入放在一个函数中,并将所有的输出放在另一个函数中。这使您可以将所有主逻辑放在自己的代码中,而不必关心如何获得结果或执行操作。有一天,您可能想从文件获取数据或通过网络发送数据,而唯一需要更改的是输入/输出代码。 – 2012-04-26 17:19:52

回答

4

当你在main,让我们在节目看到的是:

int main() 
{ 
    getValues(); 
    getSalesTax(SalesTaxPct); 
    PrintFinal(base,pt,SalesTaxPct); 
} 

,你的程序知道在这一点上唯一的变量是:getValues()getSalesTax()gettotal_price()PrintFinal()。警告告诉你,在你的程序的这一点上,SalesTaxPct还没有被声明,并且查看我们的程序知道的变量/函数列表,实际上,SalesTaxPct不在列表中。我们期望SalesTaxPct的价值来自哪里?

它看起来像来自功能getValues,我们从用户输入中获取它。然而,任何时候你有{ ... },大括号内的东西不能在外面访问。因此,SalesTaxPct仅在函数getValues内的“范围内”。如果您希望在该功能之外(您可以)访问该功能,则需要稍微改变一下。

int main() 
{ 
    double base; 
    double opt; 
    double SalesTaxPct; 
    getValues(base, opt, SalesTaxPct); 
    getSalesTax(SalesTaxPct); 
    PrintFinal(base, opt, SalesTaxPct); 
} 

现在当我们在main需要它们时,我们所有的变量仍然存在。但是,这里仍然存在问题。我们希望我们传入getValues的更改更改main中的变量。这意味着我们不能通过“按价值”,因为这将首先制作副本,然后更改这些副本(不是我们想要的)。取而代之的是,我们必须说,我们所做的更改需要从功能一些如何返回:

void getValues(double & base, double & opt, double & SalesTaxPct); 

这一点&存在意味着,而不是制作副本和更改复制,我们讲的是功能对我们直接传入的变量进行操作。这被称为“通过参考”。

在你的代码的其他部分有一些类似的问题,但现在你可以弄清楚如何解决它们。

+0

谢谢你,帮助了很多! – supasized 2012-04-26 17:56:48