![](/img/trans.png)
[英]C++ How can I use an unordered_map with custom hash & compare as member variable if those functions get passed in Constructor?
[英]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(double p,double n,double i);
正如您所說的那樣,'i'變量(類的成員變量)沒有得到更新。這是因為函數中的變量名沖突,總是首選使用局部變量。 因此,您的局部變量會被修改(其作用域僅限於此函數)。
我認為您應該擺脫此變量或使用this-> i(完整規范)來避免混淆,就像玉米秸稈所說的那樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.