Bonjour

J'ai un devoir à faire et j'ai une dernière question à laquelle je n'arrive pas à répondre.

J'ai créer une classe qui s'appelle "compte" et dans laquelle on trouve à la fois le numéro de compte ainsi que la balance du compte. J'ai également créer diverses autres fonctions dont:
- fonction compte vide
- fonction obtenir le numero de compte
- fonction obtenir la balance du compte
- fonction definir la balance du compte
- fonction définir le numéro de compte
- fonction de débit du compte
- fonction de crédit du compte

Et maintenant je dois faire une fonction transfert qui correspond naturellement au fait que je dois débiter un premier compte pour créditer le deuxième. Ca a l'air simple mais j'ai un souci (qui est sympa si votre banque vous fait ça): j'arrive à créditer le premier compte mais ça ne débite pas pour autant le deuxième ...

Les recommandations du devoir sont:
- deux entrées: 1 compte et un int
- sortie: booléen
==> transfer(other: account, amount:int): boolean
- il faut que amount soit supérieur ou égal à 0
- il faut que la balance du compte débiteur soit suffisante


J'ai fait la chose suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
bool account::transfer(account other, int amount){
    if (amount >=0 & other.get_balance() >= amount)
        {credit(amount);
        other.debit(amount);
        return true;}
    else
        {return false;}
}
En terme de test, j'ai fait ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
 
    cout << "Invalid parameter: too low balance" << endl;
    cout << acc_credit.transfer(acc_debit,300) << endl;
    acc_credit.println();
    acc_debit.println();
    cout << endl;
 
    cout << "Valid parameter (transfer of 50)" << endl;
    cout << acc_credit.transfer(acc_debit,50) << endl;
    acc_credit.println();
    acc_debit.println();
Donc comme je l'ai dit plus tôt, le compte qui doit gagner de l'argent gagne bien de l'argent mais celui qui doit en perdre, ne perd rien. J'ai essayé différentes techniques comme réutiliser set_balance que j'ai défini plus tôt dans mon devoir mais le résultat reste le même

Si vous avez une petite idée, merci d'avance