|
Bas de page | |
---|---|
Auteur | Sujet : problème d'héritage |
Publicité | Posté le 05-08-2010 à 12:31:16 |
Un Programmeur | Renseigne-toi sur l'heritage virtuel (si B&C heritent virtuellement de A, il n'y en aura qu'un dans D). --------------- The truth is rarely pure and never simple (Oscar Wilde) |
in_your_phion |
|
Un Programmeur | Oui: le constructeur de A sera appele une fois, et les parametres seront ceux donne par le constructeur de la classe la plus derivee (D ici). C'est piegeux si A a un constructeur par defaut mais qu'il ne faut pas l'utiliser, si il n'y a pas d'appel a un constructeur de A dans la classe la plus derivee, c'est le constructeur par defaut qui sera appele. --------------- The truth is rarely pure and never simple (Oscar Wilde) |
in_your_phion | ok merci!! Y'a t-il un moyen d'éviter l'héritage virtuel ? je trouve ça vraiment complexe à mettre en œuvre et piegeux comme tu le dis Que faut t'il faire dans ce genre de situation ?
i.e : - C_1 dérive de B_1 qui dérive de A_1 - etc chaque classe A_1,B_1, ... a besoin d'hériter d'une classe correspondante A_2, B_2, ... j'ai l'impression que ce genre de situation peut arriver souvent .... Par exemple : A_1 est une voiture traban qui 'hérite' d'une classe A_2 qui implémente un moteur de base (à pédales ) B_1 est une voiture hummer qui 'hérite' d'une classe B_2 qui implémente un moteur à réaction ne reste t-il que l'héritage virtuel et tout le hardcore qui va avec ? merci par avance ... Message édité par in_your_phion le 07-08-2010 à 14:10:45 |
theshockwave I work at a firm named Koslow | J'ai tendance à penser que l'héritage virtuel, ca arrive plutôt rarement. Regarde si tu ne peux pas découper ton objet en des entités plus simples, essaye de séparer en terme de responsabilités. Est-ce que ta voiture doit nécessairement savoir exactement quel type de moteur elle embarque ? Ou est-ce qu'au contraire, il lui suffit d'avoir une interface basique sur comment l'utiliser et ne pas se soucier de son type exact ? --------------- last.fm |
Un Programmeur | Une voiture qui hérite (virtuellement ou non) d'un moteur, ça m'inquiète.
--------------- The truth is rarely pure and never simple (Oscar Wilde) |
Joel F Real men use unique_ptr | fichtre, oui composition/aggrégation et non héritage ici |
in_your_phion |
Message édité par in_your_phion le 08-08-2010 à 13:00:27 |
Publicité | Posté le 08-08-2010 à 12:58:59 |
Paulp ~, sweet ~ | Tu peux regarder du coté du design pattern "decorator", c'est une solution pour éviter l'héritage multiple. |
in_your_phion |
Message cité 1 fois Message édité par in_your_phion le 09-08-2010 à 23:51:47 |
mr simon | Pourquoi tu n'as pas de hierarchie entre les encodeurs ?
Message cité 1 fois Message édité par mr simon le 10-08-2010 à 00:36:42 |
theshockwave I work at a firm named Koslow |
--------------- last.fm |
in_your_phion | hello,
|
in_your_phion | bonjour, Est ce que je peux faire ça ?
est ce que ce n'est pas trop "crade" ? car pour la classe B j'initialise B::e mais du coup B hérite de A::e (en privé donc inaccessible) qui ne sera jamais utilisé ni initialisé. merci par avance Message cité 1 fois Message édité par in_your_phion le 12-08-2010 à 10:00:25 |
Joel F Real men use unique_ptr | B n'a pas a hérité de A,mais d'une interface de A
|
theshockwave I work at a firm named Koslow |
--------------- last.fm |
in_your_phion |
hello En fait, pp à l'interface: comment, quand on a une classe :
pourquoi on peut faire :
alors que 'e' ne pointe vers aucun objet de type E alloué ??? je ne pige plus ... il me semblait que pour faire ça il faut avoir un objet alloué. Par exemple :
Message cité 1 fois Message édité par in_your_phion le 12-08-2010 à 23:45:52 |
in_your_phion | uuuup |
mr simon |
|
in_your_phion |
effectivement, ça me parait bizarre que ça marche. En plus de toute manière la fonction est privée donc ce n'est pas possible même si 'e' est statique, non ? Est ce que quelqu'un pourrait m'indiquer la solution ? je ne vois pas ... i.e. comment faire de la composition ou de l'agrégation en évitant les static_cast partout, es-ce possible ? merci Message édité par in_your_phion le 16-08-2010 à 18:00:05 |
theshockwave I work at a firm named Koslow |
Message édité par theshockwave le 16-08-2010 à 18:06:19 --------------- last.fm |
in_your_phion | salut,
|
theshockwave I work at a firm named Koslow |
in_your_phion |
salut, dans ton exemple, B n'hérite plus de A ... mais les deux A et B héritent d'une interface commune iEncoderUser. Dans mon cas B est "une sorte de" A. La seule solution que je vois, ce serait effectivement de casser l'héritage et de dire que A et B sont disctincts et héritent chacun d'un encodeur différent. Mais bon, normalement B est un bien une sorte de A ou alors, de faire des fonctions vides dans comme dans ton interface IEncoder, mais c'est pas terrible non ? Comme ça alors ?
.. Message édité par in_your_phion le 16-08-2010 à 23:21:41 |
theshockwave I work at a firm named Koslow | instancier dans ton getter me semble être une grosse erreur.
--------------- last.fm |
in_your_phion | salut finalement j'ai changé, effectivement je pourrais pas faire quelque chose de propre avec B qui dérive de A et EncodeurComplexe qui dérive de Encodeur. J'ai finalement un seul encodeur qui fait les trucs vraiment de base (encodage int/string, etc), et j'ai transféré les encodages plus complexes dans les classes A et B, car les traitements sont davantage fonctionnels : il appartient donc aux classes de savoir ce qu'elles encodent, pas à l'encodeur. Donc voilà, je ne sais pas si c'est la meilleur solution, mais bon, ça me simplifie les choses... merci encore pour ton aide! Message édité par in_your_phion le 17-08-2010 à 13:24:35 |
Publicité | Posté le |
Sujets relatifs | |
---|---|
[resolu] Probleme d'heritage des CSS | Problème d'héritage depuis une classe abstraite |
Problème dozer et héritage | Heritage: virtual / static probleme de design |
Problème avec héritage et méthode virtuelle | Problème d'héritage multiple |
[merise] Probleme d'heritage, MCD et sgbd mysql.. | Problème héritage entre 2 classes |
Heritage Fonction abstraite, Probleme conteneur Heterogene | [Résolu] Problème d'héritage d'héritage + redéfinition de méthode |
Plus de sujets relatifs à : problème d'héritage |