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 méthode


Sujet :

C++

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Points : 164
    Points
    164
    Par défaut Problème de méthode
    Bonjour à tous
    J'ai un petit problème "théorique" que je n'arrive pas a résoudre ...

    Je doit a divers moment de mon appli, gérer le chargement de différente objet , représenter par des classes, toute dérivée d'une classe mère : cEvent .

    Concrétement, lorsque je doit charger un cEvent, j'ai seulement le chemin vers un fichier le décrivant et rien de plus .
    Ca peut être un cBidule ou un cMachin que je doit créer .
    Le problème vient du fait que bien que cBidule et cMachin soit tout deux des cEvent , aucun des deux ne se crée / charge de la même manière .

    Mon but est de créer un manager : cEventManager , avec un fonction Load , qui prendra en paramètre le chemin du fichier décrivant mon Event et se chargant de créer le bon type de cEvent .

    Je ne vois pas trop comment faire , a part un truc assez moche du style ( sachant que je peut tout a fait inclure le type d'objet a créer en début de chaun de mes fichiers de descriptions )

    if ( EventType == "bidule" ) return new cBidule("BidulePath")
    if ( EventType == "machin" ) return new cMachin("MachinPath")

    Ca va surement marché, mais avec au minimum une centaine de type d'Event ... ca risque de pas être trés jolie, vous en pensez quoi ?

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Tu peux automatiser ça un peu, et le rendre un peu plus flexible. En particulier ne pas à avoir à centraliser en un point unique du code les différentes classes dérivées qui existent. Par exemple, tu peux créer une map <string, CreationFctPrt> avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef cEvent* (*CreationFctPrt)(string);
     
    cEvent* f(string str) {return new cBidule(str);}
    CreationFctPrt = &f;
    Ainsi, quand tu crées une classe, tu l'inscrit dans la map sa fonction de création (ça peut s'automatiser).

    Ou, pour rendre les choses encore plus flexibles, au lieu d'utiliser un pointeur de fonction tout bête, utilise un boost::function<cEvent*(string)>

    Ou, tant qu'à faire, utilise un framework fait pour, genre boost::serialization, e qui se justifie d'autant plus si les besoins de sauvegardes deviennent plus complexes (dans un cEvent, il est possible d'avoir un vecteur de cEventData* qui sont aussi polymorphiques et peuvent être partagés entre plusieurs cEvent...).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2004
    Messages
    616
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 616
    Points : 164
    Points
    164
    Par défaut
    Meci de la réponse, et comme je ne suis pas du point la dessus ... a vrai dire j'ai pas comprit rand chose Je vais me renseigner un peu la dessus

Discussions similaires

  1. Problème de méthodes !
    Par Franck.H dans le forum Langage
    Réponses: 3
    Dernier message: 23/01/2007, 12h08
  2. Problème avec méthode "cloneNode()"
    Par kingmandrax dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 31/10/2006, 14h14
  3. Problème de méthode
    Par Thibaut_Dupont dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 10/07/2006, 14h16
  4. problème de méthode paint()
    Par guillaumeM63 dans le forum 2D
    Réponses: 2
    Dernier message: 16/05/2006, 23h50
  5. problème bizarre, méthode recurssive
    Par akrobat dans le forum C++
    Réponses: 19
    Dernier message: 05/05/2006, 14h22

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