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 :

transformer un string en code


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Par défaut transformer un string en code
    Bonjour.

    Je voudrais savoir si, selon vous, transformer un string ou char en code source est possible, et si oui, comment faire ?

    voici un exemple pour illustrer ma question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    std::string mot ( "Object_Supersonic" ) ;
     
    Objet_supersonic  *objetTest = new 'mot' ;
     
    //ou encore, grâce a l'héritage :
     
    Objet = new 'mot' ;
    bien sur, cela ne fonctionne pas, mais l'idée est là : pouvoir créer depuis un string, ou mot ( dans mon cas lu depuis le disque dur ) un objet hérité particulier ...

    Merci si vous pouvez m'aider

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    C'est rigoureusement impossible.
    Le code source est compilé en binaire bien avant l'exécution.

    Par contre, tu peux implémenter un interpréteur.

    Dans ton cas plus précis, ca s'appelle factory.

    Tu écris une fonction Bidule* allocateBidule(std::string const&) qui se débrouille avec son argument.

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Par défaut
    un interpréteur ?

    cela reviendrait-it pas a faire ca, par ex ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    if ( mot == "Object_Supersonic" )
    {
        monObject = Object_Supersonic ;
    }
    Si non, qu'est-ce que c'est ?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Leternel a raison, il te faut une factory. Tout d'abord, il faut bien garder à l'idée que tous les objets créés via la factory implémenterons la même interface. L'idée est simplement d'avoir un code qui à a un nom associe un type, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    struct Interface {
    virtual void method() = 0;
    }; 
     
    class MessageStart : public Interface {
     public:
      MessageStart() {}
      virtual void method() { std::cout << "I am a start message !" << std::endl; }
    };
     
    class MessageStop : public Interface {
     public:
      MessageStop() {}
      virtual void method() { std::cout << "I am an end message !" << std::endl; }
    };
     
    Interface* newMessage(std::string const& name) {
      if (name == "start")
        return new MessageStart;
      else if (name == "stop")
        return new MessagStop;
     
      return nullptr;
    }
    Sinon, j'ai montré une technique sur ce forum pour répertorier automatiquement les classes disponibles pour une interface données, on peut faire comme ça.

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Par défaut
    Ok, merci pour vos réponses...Je vais potasser tout ca...
    J'ai une autre question, mais je vais créer un nouveau post, vu que ce n'est plus le même sujet.

    Merci encore

  6. #6
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 736
    Par défaut
    Bonjour.

    Une autre possibilité, vu que tu n'as pas précisé un langage en particulier, serait d'utiliser un langage interprété comme Lua ou Python.

    Maintenant je sais pas si cela correspond exactement à tes besoins.

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

Discussions similaires

  1. [Excel] Intreprêter du string en code
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/01/2006, 10h05
  2. Transformer une string en un dictionnaire
    Par nabix dans le forum Général Python
    Réponses: 5
    Dernier message: 24/11/2005, 17h34
  3. [Date] Comment transformer mon String en date avec newDate?
    Par Devil666 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/06/2005, 16h50
  4. [XSLT] Transformer un String contenant du xml
    Par VinceFromBcn dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 07/07/2004, 12h42
  5. Transformer un String en InputStream
    Par felix79 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 07/07/2004, 12h18

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