IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Problème de conception avec héritage


Sujet :

C++

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut Problème de conception avec héritage
    Hello,

    Je me tape du "legacy code". La conception générale me semble à revoir, mais bon, comme d'hab, pas le temps.

    J'ai, pour simplifier, l'héritage suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class A
    {
        std::vect<A*> myVect;
    }
     
    class B : public A
    {
    }
    A noter que dans ce vecteur, je ne peux jamais avoir à la fois des pointeurs vers A et des pointeurs vers B. Le problème est qu'actuellement, quand je travaille avec des B, le code existant fait du dynamic_cast à tire-larigot quand il extrait les éléments du vecteur.

    J'ai pensé à utiliser une technique à la CRTP, mais cela impliquerait d'instancier des A<A> et des B<B>, et ce n'est pas non plus très satisfaisant, même si je pourrais mettre des types par défaut, et que cela apparaîtrait transparent.

    Que me conseillez-vous ? Je ne peux pas faire de trop grosses modifs (temps).

    Merci.

  2. #2
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    qui dit dynamic_cast dit qu'il y a en fait besoin d'appliquer le pattern Visiteur

  3. #3
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par Joel F Voir le message
    qui dit dynamic_cast dit qu'il y a en fait besoin d'appliquer le pattern Visiteur
    Ou, du moins, du double dispatch

    Ceci dit, peut etre que tu places simplement ton tableau d'objet à un mauvais endroit

    Si chaque type dérivé de ta classe de base ne contient jamais qu'une collection d'un type particulier de la classe de base (B ne contenant jamais que des B, par exemple), peut être aurais tu intérêt à envisager A comme n'étant rien d'autre qu'une interface : une classe ne présentant que des fonctions virtuelles pures, à charge pour les classes dérivées d'en fournir une implémentation correcte sur base du type d'objets qu'ils doivent effectivement maintenir.
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Je pense que la solution templatisée aurait été la plus indiquée en l'espèce.

    Mais comme la conception de ce code est vraiment à revoir, je pense que je vais différer mon intervention.

    Merci pour vos avis !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Composite] [Java] problème de conception, multi héritage, composite ?
    Par phoenix_stealer dans le forum Design Patterns
    Réponses: 2
    Dernier message: 13/11/2013, 17h47
  2. Problème de conception avec les mutex de Boost
    Par Benoit_T dans le forum Threads & Processus
    Réponses: 1
    Dernier message: 22/03/2012, 17h15
  3. Problème de conception avec cases à cocher
    Par jbx50 dans le forum Modélisation
    Réponses: 4
    Dernier message: 27/03/2008, 11h28
  4. Réponses: 5
    Dernier message: 04/03/2007, 15h33
  5. Réponses: 3
    Dernier message: 31/10/2006, 09h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo