繁体   English   中英

为什么不能在其他成员函数中使用构造函数中的变量“ i”? C ++

[英]Why cant I use the variable “i” from my constructor in other member functions? C++

我正在为我的编程方法创建Bank程序,由于某种原因,我似乎无法在其他任何成员函数中使用在构造函数中分配给变量i的值。 例如,如果用户输入为6并且构造函数计算出i为0.005,则该值(0.005)不会传递给MakePayment函数。 相反, i重置为零。

谁能对此有所启发? 我的代码如下。

  Loan_Data::Loan_Data(double p, double n, double i)
{
    cout << "Enter the loan amount: $";
    cin >> p;
    cout << "Enter the loan length: ";
    cin >> n;
    cout << "Enter your credit score: ";
    cin >> i;

        i = i / 100;
    i = i / 12;
    n = n * 12;
    Bal = p;
        A = (p * ((i * pow(1 + i, n)) / (pow(1 + i, n) - 1)));

        cout << "A is: " << A << endl;
        cout << "Bal is: " << Bal << endl;
        cout << "i is: " << i << endl;
}
void Loan_Data::MakePayment(double pay)
{
        cout << "i is: " << i << endl;
        cout << "Bal is: " << Bal << endl;
    cout << "Enter payment amount: $";
    cin >> pay;

        cout << "Bal is: " << Bal << endl;

    Bal = ((i + 1) * Bal) - pay;
        cout << "i is: " << i << endl;
        cout << "Bal is: " << Bal << endl;
        cout << "Pay is: " << pay << endl;
        cout << "A is: " << A << endl;
        A = pay;
        cout << "A is: " << A << endl;
}

i = i / 100; 正在设置参数i ,而不是成员变量i (假设存在该变量)。 该参数正在隐藏成员。

您可以通过使用this->i (即this->i = i / 100 )或更改参数名称以使其不与成员变量名称冲突来解决此问题。

但是,也许您应该放弃该参数,因为您实际上并没有使用它( cin >> i;对它具有的任何值进行取整,因此一开始就毫无意义地传递它)。

您没有发布所有代码,但我假设您在课堂上拥有i属性。

问题是您在构造函数中将i用作参数,因此隐藏了类中的i 由于实际上并没有使用ipn的值,因此可以像这样从构造函数的参数中删除它们:

Loan_Data::Loan_Data(){
   double p, double n;

我想看看您的整个课堂定义。 但是,我看到的是此功能的问题:->

Loan_Data :: Loan_Data(double p,double n,double i);

正如您所说的那样,'i'变量(类的成员变量)没有得到更新。这是因为函数中的变量名冲突,总是首选使用局部变量。 因此,您的局部变量会被修改(其作用域仅限于此函数)。

我认为您应该摆脱此变量或使用this-> i(完整规范)来避免混淆,就像玉米秸秆所说的那样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM