Bien j'ai une classe mère (Vehicule) ayant plusieurs type de classe fille (Moto, Voiture).
J'ai également une classe ListeVehicules qui est un vecteur de Moto et de Voiture casté en objet Vehicule.
J'aimerais faire un constructeur de la classe ListeVehicules qui recoit comme paramèttre un vector<Vehicule*>.
Pour cela, je ne sais pas ce qui est le mieux de faire:
- passer en boucle sur chaque objet du vecteur;
- pour chaque objet appeler le constructeur par copie entre deux objets Vehicule
Ou bien appeler spécifiquement le constructeur de copie des classes filles ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ListeVehicules::ListeVehicules(vector<Vehicule*> ve) { this->listeV.resize(ve.size()); for (unsigned int cpt = 0; cpt < ve.size(); cpt ++) { this->listeV[cpt] = ve[cpt]; } }
- passer en boucle sur chaque objet du vecteur;
- tester le type d'objet fille
- en fonction du type appeler le constructeur correspondant.
Est-ce que la première méthode fera d'elle même appel au constructeur de la classe fille correspondant à l'objet?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 ListeVehicules::ListeVehicules(vector<Vehicule*> ve) { this->listeV.resize(ve.size()); for (unsigned int cpt = 0; cpt < ve.size(); cpt ++) { // getType retourne 1 pour moto, 2 pour Voiture switch (ve[cpt]->getType()) { case 1: { this->listeV[cpt] = (Vehicule*) new Moto(*ve[cpt]); break; } case 2: { this->listeV[cpt] = (Vehicule*) new Voiture(*ve[cpt]); break; } } } }
Ou bien suis-je obligé de tester le type et appeler les constructeurs spécifiques moi même ?
Partager