1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| #include <iostream>
#include <string>
# include <vector>
#include "Vehicule.h"
#include "Voiture.h"
#include "Moto.h"
#include "Camion.h"
using namespace std;
int main()
{
/* je crée un tableau dynamique de véhicules où je mettrai tous les véhicules dont je dispose en ces trois classes-filles: voitures, motos, camions: */
vector<Vehicule*> listeVehicules;
// je mets mes véhicules:
listeVehicules.push_back (new Voiture(12500,4,2002,150,"Land-Rover", " Tout-terrain ",3, "bleu-nuit"));
/* A) ci-dessus => erreur: no matching function for call to 'Voiture::Voiture
(int,int,int,int, const char [11], const char [15], int, const char[10])'
listeVehicules.push_back (new Voiture(6000,4,2005, 150,"New-Beetle","cabriolet",2, "bleu-nuit,"));
// même erreur que A)
listeVehicules.push_back (new Voiture(35000,5,200,2006,"Range-Rover","Premium",5,"blanc"));
// même erreur A)
// et rajouter pour les motos la valeur de m_cylindree()
listeVehicules.push_back (new Moto(1100,2,2010,95,"Kawasaki",125));
/* erreur A'): idem que A mais avec call to 'Moto::Moto(... plus qu'il dit:
candidate expects 0 argument, 6 provided */
listeVehicules.push_back (new Moto(10000,2,2004,150,"Harley-Davidson",2400));
// erreur A')
// et rajouter pour les camions int m_tonnage
listeVehicules.push_back (new Camion(3000,4,2000,130,"Combi-VW",2));
/* ereur A": idem que A) mais avec call to 'Camion::Camion... plus qu'il dit:
candidate expects 0 argument, 6 provided... ah bon, il en attend 0? */
listeVehicules.push_back (new Camion(50000,12,2001,145,"Mercedes",18));
// erreur A")
// une fois la collection définie, le job par lui-même:
int choix(0);
cout << "Que souhaitez-vous ?" << endl;
cout << "1. Une moto" << endl;
cout << "2. Une voiture" << endl;
cout << "3. Un camion" << endl;
cin >> choix;
switch(choix)
{
case 1:
// Moto
{
// le proto de la méthode affiche est dans Vehicule.h en virtual
(listeVehicules[4])-> affiche(); /* utilisation de la fonction
* affiche() pour le pointeur de la case 4 qui doit correspondre à la Harley */
}
break;
case 2:
// Voiture
{
(listeVehicules[1])->affiche(); // pour la Beetle
}
break;
case 3:
// Camion
{
(listeVehicules[6])->affiche(); // le camion Mercedes
}
break;
default:
cout << "Entrée invalide" << endl;
break;
}
for (int i(0); i<listeVehicules.size(); ++i) /* attention: comparaison entre
des expressions entières signée et non signée: ça veut dire quoi, ça ??? */
{
delete listeVehicules[i];
/* attention: deleting object of polymorphic class type 'Vehicule' which has
non virtual-destructor might cause undefined behaviour */
listeVehicules[i] = 0; // on met le pointeur à zéro
}
return 0;
} |
Partager