2015-06-19 28 views
0

我正在爲我的編程方法創建一個銀行程序,出於某種原因,我似乎無法使用任何其他成員函數的構造函數中分配給變量i的值。例如,如果用戶輸入是6i由構造函數計算爲0.005,則該值(0.005)不會傳遞到MakePayment函數。相反,i重置爲零。爲什麼不能在其他成員函數中使用構造函數中的變量「i」? C++

任何人都可以對此有所瞭解嗎?我的代碼如下。

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; 
} 
+1

什麼是類聲明?我是一個成員變量?如果是這樣的話,構造函數的參數也是'i'。 –

+3

這只是一個混亂......嘗試傳遞參數,然後cin他們? – paisanco

+1

你爲什麼期望能夠在其他成員函數中使用'i'? 'i'只是你的構造函數中的一個局部變量。在其他成員函數中不可能使用它。它不存在於其他成員函數中。 – AnT

回答

1

i = i/100;是設置參數i,而不是成員變量i(假設這樣的變量存在)。該參數隱藏成員。

可以通過解決這個或者使用this->i(即this->i = i/100),或變更參數的名稱,以便它不與該成員變量的名稱衝突。

但是,也許你應該擺脫這個參數,因爲你實際上並沒有使用它(無論它有什麼價值,所以它毫無意義地把它傳遞到第一位)。

+0

假設成員可以存在,並且使用'this->'解決了問題,您是正確的。我不知道爲什麼我的教授指定使用i作爲構造函數中的一個參數,也是一個成員變量,但非常感謝您的幫助! – JGT

0

您沒有發佈您的所有代碼,但我認爲您的課程中有i屬性。

問題是,您在構造函數中將i作爲參數,因此類中的i處於隱藏狀態。因爲你沒有實際使用的ipn值,你可以簡單地從你的構造函數的參數,這樣的刪除:

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

我想看到你的整個類的定義。然而,我能看到的是這個函數的問題: - >

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

正如你所說,'我'變量(你類的成員變量)沒有得到更新。這是因爲你的函數中的變量名稱collission,其中局部變量總是首選。所以你的本地變量被修改(其範圍僅限於這個函數)。

我認爲你應該擺脫這個變量或通過使用this-> i(完整規範)來避免混亂,就像cornstalks所說的那樣。

相關問題