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

时间:2015-06-19 02:46:21

标签: 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;
}

3 个答案:

答案 0 :(得分:1)

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

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

但也许你应该摆脱这个参数,因为你实际上并没有使用它(cin >> i;核实它拥有的任何价值,使得首先传递它完全没有意义。)

答案 1 :(得分:0)

您没有发布所有代码,但我认为您的课程中有i属性。

问题是您在构造函数中将i作为参数,因此隐藏了类中的i。由于您实际上并未使用ipn的值,因此只需将其从构造函数的参数中删除即可:

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

答案 2 :(得分:0)

我想看看你的全班定义。但是,我能看到的是这个功能的问题: - &gt;

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

正如你所说'i'变量(你的类的成员变量)没有得到更新。这是因为你的函数中的变量名称collission,其中局部变量总是首选。因此,您的局部变量会被修改(其范围仅限于此函数)。

我认为你应该摆脱这个变量,或者使用this-&gt; i(完整的规范)以避免混淆,就像玉米秆说的那样。