begin process at 2012 05 30 01:43:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Problème d'analyse sur polymorphisme


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

Problème d'analyse sur polymorphisme

mercredi 29 septembre 2010 à 19:17:54 | Problème d'analyse sur polymorphisme

vinc1008881

Bonjour à tous,


Je me permets de solliciter votre expérience pour résoudre un petit problème qui me turlupine depuis qques jours... Je m'explique :

J'ai plusieurs classes A1, A2, ... qui hérite d'une meme classe mère A.

A1, A2 ont des méthodes qui leurs sont propres à chacune. Je voudrais faire :

A *maclasse_generique;

//.....

A = new A1; //différentiation.
A.methode_propre_a_A1();

Pour y arriver j'ai procèder comme suivant :

class A{
public :
virtual void methode_propre_a_A1(void){}
};

class A1 : public A{
void methode_propre_a_A1(void);
};

N'y a t-il pas une façon plus élégante d'avoir le meme résultat mais différement (classes abstraites ?/ transtypage ?). Je précise que pour le moment je ne peux pas faire une classe abstraite car méthodes dans les classes filles sont différentes.

Merci.


jeudi 30 septembre 2010 à 10:55:05 | Re : Problème d'analyse sur polymorphisme

CptPingu

Administrateur CodeS-SourceS
Il y a une petite erreur de conception dans ton raisonnement.

Si une méthode est propre à une classe fille, elle ne doit pas apparaître dans la classe mère, tout simplement.

Reprenons ton exemple:

Code C/C++ :
class A {};
class A1 : public A
{
public:
  void methode();
};


La solution est simple, tu n'écris la méthode que dans A1. Ensuite, si tu veux l'utiliser tu peux faire ceci:

Code C/C++ :
A* maclasse_generique = new A1;

// Tu ne peux pas faire: maclasse_generique.methode()
// en revanche, tu peux tout à fait faire:
A1* pa = static_cast<A1*>(maclasse_generique);
pa->methode();


J'ai utilisé static_cast parce que j'étais sur du résultat, mais en cas de doute j'aurais pu aussi faire un dynamic_cast (plus lent mais peut dire si la conversion a échouée).

________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
vendredi 1 octobre 2010 à 20:48:35 | Re : Problème d'analyse sur polymorphisme

shorzy

ca me semble correct !


Cette discussion est classée dans : problème, methode, void, classes, a1


Répondre à ce message

Sujets en rapport avec ce message

Question sur l'heritage et classes [ par Darkneon ] Salut,J'aimerai savoir si c'est possible qu'un changement de donnee dans une classe de base affecte les 2 classes heritees?Par exemple :#include &lt Problème avec une Arboresence CTreeCtrl [ par sbleuze ] Je gère une arboresence à l'aide d'un CTreeCtrl.Ce que je n'arrive pas à faire, c'est que lorsque je suis sur un point de mon arborescence, et que je Problème "général" avec Direct3D, HELP ! [ par ProGamer ] J'ai commencé une application Direct3D. Elle était constituée d'une classe principale qui contenait l'objet LPDIRECT3D8. Tout marchait bien. Ensuite, Instanciation de sous-classe [ par vecchio56 ] Bonjour J'ai la hiérarchie de classes suivante: A0, A1, A2, A3, A4... sont des sous-classes de A. J'ai besoin d'instancier une de ces sous-classes se Problème avec string [ par visualstar ] Bonjour, J'ai un problème en C++ avec les string.Comment peut-on faire pour passer un string à une fonction. Dans cette fonction, je fais un cin ; mai Probleme URGENT (merci) [ par MATHIS49 ] Bonjour , j'ai un gros probleme, j'aimerais savoir pourquoi jai un probleme avec ma methode virtuel lors de la compilation  !Mon script :///////////// problème simple sur les DLL [ par phenX ] salut,voila, je suis débutant en création de DLL et je n'y arrive pas.J'utilise DevCPPJ'ai créé un projet PROJET1.DEV, dedans j'ai un fichier "Def.h" problème de dll pour VBA pour un nul [ par wismerhill__ ] Bonjour à tous, je suis grand débutant en C++ et je m'y met apres VBAJe voudrais faire une dll en c++ car VBA ne va assez vite, le problème c'est que classe et agregation... [ par Clonk ] bonjour,j'utilise plusieurs classes ayant des agregations (sous Borland).Disons en gros que si on a :class personne{private:int age;public:void affich Problème avec les classes [ par NAVIE ] Bonjour, j'écris ce message pour vous demander de l'aide au sujet d'un programme que j'ai conçu. Après avoir crée une classe, que j'ai appellé Bouto


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,934 sec (3)

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