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

Langage C++ Discussion :

Un string en template


Sujet :

Langage C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Un string en template
    Bonjour à tous,

    J'espère ne pas recréer une discussion déjà existante mais j'ai un petit problème avec les templates et je coince un peu. Je sollicite donc votre aide

    Pour expliquer globalement le sujet sur lequel je travail, ça consiste à utiliser des algorithmes évolutionnaire pour la résolution de problème de data mining.
    Donc pour résoudre un algo évolutionnaire j'ai besoin de connaitre la façon de représenter une solution, évaluer une solution, et d'autres composantes..

    Maintenant pour évaluer une solution j'utilise ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EvalFunc<Mock>& eval = do_make_eval(...);
    Mock étant un type de représentation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    class Mock: public moeoVector < MockObjectiveVector , unsigned int >
    Mais maintenant je voudrai pouvoir modifier cet représentation à l'aide d'un fichier de param :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Representation=Mock
    donc je récupère la valeur de la représentation dans une chaine de caractère et voudrai ensuite l'appliquer comme template, un peu comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String Rep = "Mock"; 
    EvalFunc<Rep>& eval = do_make_eval(...);
    Voilà, j'espère avoir été compréhensible, je vous remercie d'avance de l'aide que vous pourrez m'apporter.
    Cordialement,
    B.F

  2. #2
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Hello,

    Les templates sont instanciés lors de la compilation, il est donc impossible d'avoir quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    std::ifstream ifile("a_file");
    std::string name;
    ifile >> name;
    EvalFunc<name>& eval = do_make_eval(...);
    Tout simplement car EvalFunc<name> n'est pas un type que le compilo connait. (Type connu à l’exécution seulement).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EvalFunc<Rep>& eval = do_make_eval(...);
    Attention à ce genre de choses aussi, il y à de très fortes chances pour que do_make_eval te renvoi un objet temporaire, et ta référence ne sera donc pas valide.

    edit : Tu peux cependant faire des if / else
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    std::ifstream ifile("a_file");
    std::string name;
    ifile >> name;
     
    typedef moeoVector < MockObjectiveVector , unsigned int > EvalBase;
    EvalBase *eval;
    if(name == "Mock") {
        eval = do_make_eval<Mock>(...);
    }
    else if(name == "Mock2") {
        eval = do_make_eval<Mock2>(...);
    }
    // traitements
    delete eval;

  3. #3
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    L'idéal pour toi est de regarder le design pattern factory.

    Il permet de créer une classe statique qui va instancier tes objets en fonction d'un paramêtre.

    Et de créer bien sur un classe mère dont hériterons toutes tes classes que tu veux instancier pour pouvoir les balader partout.

    (perso j'aime bien aussi rajouter un petit enum dans la classe mère afin de savoir de quels types sont les classes fille pour les castés comme il faut )
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponse,

    Effectivement le design pattern factory permet résoudre efficacement mon problème, il ne reste plus qu'à me lancé dans l'implémentation de celui-ci

    Je vous remercie de votre aide et du temps passer pour répondre à mon sujet.
    Bonne journée à tous.
    B.F

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

Discussions similaires

  1. mettre en forme une string dans le template
    Par manbar dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 16/05/2012, 18h48
  2. Template de String et remplacement
    Par Invité dans le forum Flex
    Réponses: 2
    Dernier message: 28/04/2009, 14h41
  3. Template et string
    Par suckthewindow dans le forum Général Python
    Réponses: 1
    Dernier message: 22/05/2008, 15h43
  4. Template, String en parametre
    Par couet dans le forum Langage
    Réponses: 4
    Dernier message: 21/02/2007, 13h14
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23

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