为什么我不能在其他成员函数中使用构造函数中的变量"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
是隐藏的。由于您实际上并没有使用 i
、 p
或 n
的值,因此您可以简单地将它们从构造函数的参数中删除,如下所示:
Loan_Data::Loan_Data(){
double p, double n;
我想
看看你的整个类定义。但是,我可以看到的是此功能的问题:->
Loan_Data::Loan_Data(双P,双N,双I);
正如您所说,"i"变量(类的成员变量)没有更新。这是因为函数中的变量名称串,其中局部变量始终是首选。所以你的局部变量被修改了(其范围仅限于这个函数)。
我认为你应该摆脱这个变量或使用这个->i(完整规范)来避免混淆,就像玉米秸秆说的那样。
相关文章:
- "error: no matching function for call to"构造函数错误
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 选择要调用的构造函数
- 如何委托派生类使用其父构造函数?
- 构造函数正在调用一个使用当前类类型的函数
- 没有用于初始化C++中的变量模板的匹配构造函数
- 初始化具有非默认构造函数的std::数组项的更好方法
- 当从函数参数中的临时值调用复制构造函数时
- 在c++构造函数中使用随机字符串生成器
- 一对向量构造函数:初始值设定项列表与显式构造
- 从构造函数抛出异常时如何克服内存泄漏
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 具有默认模板类型的默认构造函数的类型推导
- 使用dynamic_cast和构造函数时出错
- 在c++中使用向量时,如何调用构造函数和析构函数
- 奇怪的构造函数行为