begin process at 2012 02 10 09:26:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Self dérivation de classe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Self dérivation de classe

mardi 8 janvier 2008 à 19:51:11 | Self dérivation de classe

Mastersam

Bonjour, j'ai une idée qui m'a illuminé cette nuit mais je ne sais pas comment la réaliser, ni même si elle est possible.

J'ai une classe Vehicule avec des fonctions définies en virtual (tourner, avancer ...) et une fonction acheter(int nombrederoues);

Je crée aussi 2 autres classes : Moto ou Voiture où je définie mes fonctions (tourner avancer ...) spécifiquement sachant qu'elles utilisent des variable private de leur propre classe (volant dans Voiture ou guidon dans Moto par exemple).

Ce que j'aimerais faire, c'est acheter un vehicule en précisant juste le nombre de roues, et pouvoir le conduire sans me soucier de son type.

En code mon objectif est :

Vehicule transport;
transport.acheter(2);     //acheter une moto
transport.avancer();
transport.tourner();      //tourner le guidon



Donc je voudrais que mon transport puisse se dériver lui-même dans la fonction acheter() vers la classe Moto ou Voiture.
Je ne sais malheureusement pas comment m'y prendre, car je ne pense pas qu'un cast ou reinterpret cast puisse fonctionner depuis l'objet lui même.

Si ceci peut se faire ou si quelqu'un à une piste ...


Merci beaucoup




mardi 8 janvier 2008 à 23:30:57 | Re : Self dérivation de classe

juju12

Réponse acceptée !
Pas bien compris...
Tu veux simplement créer un véhicule avec un certain nombre de roues et ensuite le manipuler de façon transparente? Tu peux faire ça par exemple :

class Vehicule
{
public:
static Vehicule* acheter(int nb_roues);
virtual void tourner(void){...};
};

class Auto : public Vehicule
{
public :
virtual void tourner(void){...};
};

class Moto : public Vehicule
{
public :
virtual void tourner(void){...};
};

Vehicule* Vehicule::acheter(int nb_roues)
{
if(nb_roues==2) return new Moto;
else if(nb_roues==4) return new Auto;
else return 0;
}

et finalement :

int main(void)
{
Vehicule* Transport=Vehicule::acheter(2);
Transport->tourner();
return;
}


évidemment ce genre de choses ne fonctionne qu'à la  création de l'objet, tu ne peux plus transformer un objet en un autre par la suite.
mardi 8 janvier 2008 à 23:33:01 | Re : Self dérivation de classe

juju12

Oui ce que je veux dire c'est par rapport à ta syntaxe :
Vehicule transport;
transport.acheter(2);     //acheter une moto

tu peux pas transformer le vehicule en moto, c'est pour ca que j'ai mis une methode static qui te renvoie un nouvel objet (ca revient à peu près au même, non?)
mercredi 9 janvier 2008 à 10:40:35 | Re : Self dérivation de classe

Mastersam

ça ressemble bien à ce que je veux faire. Mais j'attachais quand même une importance particulière à mon :
Vehicule transport;
transport.acheter(2);     //acheter une moto

Car en fait mon application est plus complexe que l'exemple que j'ai posté. Pour rester dans les vehicules, mon application retourne une liste de tous les vehicules disponibles lors de l'appel du constructeur de Vehicule. Et seulement après je voulais acheter mon véhicule, donc je voulais bien transformer, après sa création, un véhicule en moto.

Je comprends que ce n'est pas possible, mais ta solution conviendra à mon problème, je vais juste séparer la récupération de la liste de véhicules et l'achat de celui-ci.

Je te remercie



Cette discussion est classée dans : transport, classe, acheter, tourner, vehicule


Répondre à ce message

Sujets en rapport avec ce message

constructeur en privé [ par deubix ] bonjour a tous, alors voila je dois faire un projet ou dedans j'ai une classe qui a pour nom "Vehicule".J'ai une autre calsse qui a pour nom "Probleme Aide sur les classes [ par mouadsa ] Bonsoir, J'ai un programmes en c++ où je dois créer une classe compte et puis créer n comptes (tableau dynamique), les afficher tous et saisir leurs p DLL en C++ standard utilisé par une IHM en C#/WPF [ par buno ] Amis de la communautés bonjour!J'aimerais savoir comment, depuis une IHM faite en C#/WPF, appeler une classe C++ se trouvant dans une DLL?Sur le web, This ne pointe pas sur le bin objet [ par Zakata ] Bonjours à tous,Je viens à nouveau faire un appel au secours pour m'aider à me sortir de ce problème que je train depuis pas mal de temps maintenant.J Comment appeler une méthode d'une classe d'une DLL c# avec c++ [ par dorras7 ] Bonjour,Mon problème est le suivant : je ne sais pas comment faire en C++ pour appeler une méthode d'une classe contenue dans une DLL ActiveX écrite e problème lecture variable de classe dans un singleton [ par totoscill ] Bonjour, Je rencontre un problème pour lire une variable statique de ma classe singleton "model". En effet dans cette classe, je declare: .h: public récupération du handle d'une boite de dialogue [ par sunvi ] Bonjour, je cherche à récupérer le handle d'une boite de dialogue pour la manipuler. je connais son titre et sa classe grace à spy++, voilà le code qu Thread et classe sous windows [ par tchows ] Bonjour, j'aurais aimé savoir s'il est possible d'appeler une méthode d'une classe dans un thread. Si j'avais été sous linux un simple fork() aurait


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,451 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales