第 1 部分: 我有一个超类 compteBancaire,它有两个子类 compteCourant 和 compteEpargne 以及另一个子类 compteCourantEpargne,它继承了 compteCourant 和 compteEpargne 的多重继承。
第 2 部分: 我有一个包含 CompteBancaire* 动态数组的 Banque 类,Banque 类包含一些方法,例如: ajouterCompte(CompteBancaire*) 可以将 compteBancaire* 添加到动态数组。 supprimerCompte(string numero) 假设找到一个带有传入参数的字符串的对象并将其删除,但是这个函数不能分别对每个对象进行操作, 但是当我尝试删除所有对象(4 个对象,每个类的一个对象)时,该函数会完美地完成他认为应该做的事情。 superClass compteBancaire :
class CompteBancaire
{
protected:
string numero;
double solde;
public:
//contructeur par defaut et d'initialisation et destructeur
CompteBancaire();
CompteBancaire(string, double);
virtual ~CompteBancaire();
//getters & setters
string getNumero() const;
double getSolde() const;
void setNumero(string);
void setSolde(double);
//methode retirer montant
bool retirer(double);
//methode deposer montant
virtual bool deposer(double);
//methode afficher informations du CompteBancaire
virtual void afficher() const;
};
CompteBancaire::~CompteBancaire()
{
cout << "\n******* suppression d'un compte *******" << endl;
}
子类 CompteCourat :
class CompteCourant : virtual public CompteBancaire
{
protected:
double decouvertAutorise;
public:
//contructeur par defaut et d'initialisation et destructeur
CompteCourant();
CompteCourant(string, double, double);
virtual ~CompteCourant();
//getters & setters
double getDecouvertAutorise() const;
void setDecouvertAutorise(double);
//methode retirer un montant du CompteCourant
bool retirer(double);
//methode affcicher les informations du CompteCourant
void afficher() const;
};
CompteCourant::~CompteCourant()
{
}
子类CompteEpargne:
class CompteEpargne : virtual public CompteBancaire
{
protected:
double tauxInteret;
public:
//constructeur par defaut et d'initialisation et destructeur
CompteEpargne();
CompteEpargne(string, double, double);
virtual ~CompteEpargne();
//getters & setters
double getTauxInteret() const;
void setTauxInteret(double);
//methode deposer
bool deposer(double);
//methode afficher
void afficher() const;
};
CompteEpargne::~CompteEpargne()
{
}
子类 compteCourantEpargne :
class CompteCourantEpargne : public CompteCourant, public CompteEpargne
{
public:
//constructeur par defaut et d'initialisation et destructeur
CompteCourantEpargne();
CompteCourantEpargne(string, double, double, double);
virtual ~CompteCourantEpargne();
//methode deposer
bool deposer(double);
//methode retirer
bool retirer(double);
//methode afficher
void afficher() const;
};
CompteCourantEpargne::~CompteCourantEpargne()
{
}
银行类:
class Banque
{
private:
vector<CompteBancaire*> comptesBancaires;
public:
//methode ajouter compte Bancaire a la banque
bool ajouterCompte(CompteBancaire*);
//methode qui permet de supprimer un compte bancaire
bool supprimerCompte(string);
//methode qui permet d'afficher les comptes de la banque
void afficherComptes();
//methode getTotalSoldes() retourne le solde total des comptes geres par la banque
void getTotalSoldes();
};
bool Banque::ajouterCompte(CompteBancaire* compte)
{
this->comptesBancaires.push_back(compte);
return true;
}
bool Banque::supprimerCompte(string numero)
{
for (int i = 0; i < comptesBancaires.size(); i++) {
if (comptesBancaires[i]->getNumero() == numero) {
delete comptesBancaires[i];
comptesBancaires.erase(comptesBancaires.begin() + i);
return true;
}
else {
return false;
}
}
主文件:(在这种情况下,我删除了所有对象并且它有效,但是当我尝试分别删除每个对象时他不起作用)
int main()
{
//creation de la Banque
Banque banque;
cout << "\n****************** Les quatres types de comptes ****************************\n" << endl;
//creation des differents types de comptes
CompteBancaire* compteBancaire = new CompteBancaire("CB", 135000.59);
CompteBancaire* compteCourant = new CompteCourant("CC", 93500.00, 1150.00);
CompteBancaire* compteEpargne = new CompteEpargne("CE", 23500.00, 5.5);
CompteBancaire* compteCourantEpargne = new CompteCourantEpargne("CCE", 340660.73, 2000.00, 6);
//l'ajout des differents types de compte a la banque
banque.ajouterCompte(compteBancaire);
banque.ajouterCompte(compteCourant);
banque.ajouterCompte(compteEpargne);
banque.ajouterCompte(compteCourantEpargne);
//depot d'argent
compteBancaire->deposer(1000);
compteCourant->deposer(1500);
compteEpargne->deposer(2000);
compteCourantEpargne->deposer(2500);
//retrait d'argent
compteBancaire->retirer(500);
compteCourant->retirer(500);
compteEpargne->retirer(500);
compteCourantEpargne->retirer(500);
//affichage des comptes et totales de la banque avant la suppression de quelque uns
banque.afficherComptes();
banque.getTotalSoldes();
//suppression des deux comptes
banque.supprimerCompte("CB");
banque.supprimerCompte("CC");
banque.supprimerCompte("CE");
banque.supprimerCompte("CCE");
cout << "\n****************** Apres suppression ***************************************\n" << endl;
//affichage des comptes de la banque apres la suppression de quelque uns
banque.afficherComptes();
//affichage du total des soldes de l'ensemble des comptes de la banque
banque.getTotalSoldes();
cout << "\n****************** Fin Programme ***************************************\n" << endl;
return 0;
}
如果有人能帮助我,请多多指教! 谢谢你的帮助,对不起我的英语。
我试着在网上找东西但没有结果