我正在为我的编程方法创建一个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;
}
答案 0 :(得分:1)
i = i / 100;
正在设置参数i
,而不是成员变量i
(假设存在这样的变量)。该参数隐藏了该成员。
您可以使用this->i
(即this->i = i / 100
)或更改参数名称来解决此问题,以免与成员变量的名称冲突。
但也许你应该摆脱这个参数,因为你实际上并没有使用它(cin >> i;
核实它拥有的任何价值,使得首先传递它完全没有意义。)
答案 1 :(得分:0)
您没有发布所有代码,但我认为您的课程中有i
属性。
问题是您在构造函数中将i
作为参数,因此隐藏了类中的i
。由于您实际上并未使用i
,p
或n
的值,因此只需将其从构造函数的参数中删除即可:
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(完整的规范)以避免混淆,就像玉米秆说的那样。