[繼承]執行結果少800?? |
尚未結案
|
Frances3399
一般會員 發表:13 回覆:16 積分:5 註冊:2003-10-27 發送簡訊給我 |
#include我執行此結果~都除錯了! 可是為什麼錢會少800呢? 執行結果↓ ======== 帳戶姓名:JOHN 帳戶餘額:200 帳戶姓名:MARY 帳戶餘額:2000 ======== Why?? 懇請各位先進多多指教~~謝謝 發表人 - Frances3399 於 2003/12/25 20:35:21 |
流
中階會員 發表:36 回覆:142 積分:70 註冊:2003-07-24 發送簡訊給我 |
Frances3399 您好: 參考以下有顏色的部份,改過來就會正確 #include發表人 - 流 於 2003/12/26 00:50:30 |
Frances3399
一般會員 發表:13 回覆:16 積分:5 註冊:2003-10-27 發送簡訊給我 |
void transfer(BankAccount *A, int money) { withdraw(money) ; // 將 JOHN 的錢減少 money A->deposit(money); // 再將 A object 的錢加 money }我有個疑問喔! A->deposit(money); 是什麼意思阿? 跟A.deposit(money); 有何不同?? 為什麼我用 A.deposit(money); 會發生 [C Error] Ch06_08_xx.cpp(69): E2294 Structure required on left side of . or .* 煩請指教!! |
biau
一般會員 發表:25 回覆:32 積分:21 註冊:2003-02-27 發送簡訊給我 |
|
Frances3399
一般會員 發表:13 回覆:16 積分:5 註冊:2003-10-27 發送簡訊給我 |
引言: 因為 BankAccount *A 的 A是一個 pointer 所以要用->指向member function 也就是A->deposit(money); 如果你把BankAccount *A改寫成BankAccount A; 那麼A在此 就是一個 reference 要用. 點向member function 也就是A.deposit(money); 一個是pointer 另一個是reference那麼如果我要用A.deposit(money); 那應該要如何改寫程式才可Run呢? |
流
中階會員 發表:36 回覆:142 積分:70 註冊:2003-07-24 發送簡訊給我 |
Frances3399 您好: 您問的問題小弟沒法幫您克服了 原因在於當 transfer function 中的 A 物件有他的生命週期 一但 transfer function 結束,則 A 物件也跟著結束 如果您非得用 A.deposite 的話 那只好在 transfer function 中先行呼叫 query() 這個 function 如: void transfer(BankAccount A, int money) { A.deposit(money) ; withdraw(money) ; A.query() ; } 在 A 物件尚未結束之前,就查詢 transfer 後的結果 所以在您 main 的主程式中,就不用 Mary.query() 了 不過這應該不是您要的結果 所以,小弟的建議還是傳址或指標傳會對您比較好 如果回答的不好還請多多包涵 > |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |