Au *_*Ris 1 c++ pointers reference
我想弄清楚我的错误.
我正在使用AccountC++ 编写类,其中有一些方法,比如credit(),debit()等等.
我写了一个transfer()方法,我得到的问题是它从账户中拿出"钱",a1但不记得a2.但是,如果我在account.cpp中的方法本身中打印它,它确实显示正确的结果,而在main中,余额保持不变.
你能看出我的错误吗?与参考,指针等有关吗?
这是主要的:
a1.println();
a2.println();
cout<< "Valid parameter " << endl;
cout<< a1.transfer(a2, 13) << endl;
a1.println();
a2.println();
Run Code Online (Sandbox Code Playgroud)
这是它打印的内容:
(Account(65,140))
(Account(130,100))
Valid parameter
1
(Account(65,127))
(Account(130,100))
Run Code Online (Sandbox Code Playgroud)
以下是方法的定义:
// withdraw money from account
bool Account::debit(int amount){
if (amount>=0 && balance>=amount) {
balance=balance-amount; // new balance
return true;
} else {
return false;
}
}
// deposit money
bool Account::credit(int amount){
if (amount>=0) {
balance=balance+amount; // new balance
return true;
} else {
return false;
}
}
bool Account::transfer(Account other, int amount){
if (amount>=0 && balance>=amount) {
debit(amount);
other.credit(amount);
//other.println();// prints corect amount
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
这是因为你Account通过值传递另一个.天平变为OK,但是在帐户的不同实例上,意味着副本被修改,而原始文件保持不变.
将您的代码更改为通过Account引用传递以使其工作.
bool Account::transfer(Account& other, int amount)
// ^
// HERE
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |