Dans ce genre de chose, il faut différencier ce qui est constant de ce qui ne l'est pas. Toutes les voitures on un paramètre qui spécifie le nombre de places ou la puissance du moteur. Il en va de même pour les autres types de véhicules. Des lors, ces différentes caractéristiques doivent être héritées d'une même classe mère.
Ce qui change, c'est la valeur des ces caractéristique pour chaque objet. En effet, un Ferrari n'a pas la même puissance qu'une Honda. Des lors, pour créer des différents véhicules à partir de spécification fourni chargées, pour moi le mieux est de créer une classe qui va avoir pour rôle de gérer la création de véhicules à partir d'un fichier donné en argument.
Ce qui donne quelque chose comme:
Code:
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
|
class Vehicule
{
public :
Vehicule(int nbplace,int puissance):m_nbplace(nbplace),m_puissance(puissance) {};
protected :
int m_nbplace,m_puissance;
};
class Voiture : public Vehicule
{
public :
voiture(int nbplace,int puissance):Vehicule(nbplace,puissance) {};
};
class FabriqueVehicule
{
public:
Voiture* CreateVoiture(const std::string& path)
{
std::istream fichier(path);
int puissance=0; int nbplace=0;
fichier>>nbplace>>puissance;
return new Voiture(nbplace,puissance);
}
}; |
avec une utilisation du genre
Code:
1 2 3
|
FabriqueVehicule fab.
Voiture* ferrai = fab.CreateVoiture("ferrai.def"); |
PS: il me semble que tu confond objet et classe.
Une classe est un moule à partir du quel on créer des objets.