簡體   English   中英

為什么不能在其他成員函數中使用構造函數中的變量“ 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 由於實際上並沒有使用ipn的值,因此可以像這樣從構造函數的參數中刪除它們:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM