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 :

Tableaux de types multiples


Sujet :

C++

  1. #21
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ca ne marche pas comme ça. C++ est une langage typé statiquement, quoique tu fasses tous les types que tu utilises devront être connus à la compilation. Ce que tu veux faire ici c'est la caractéristique d'un langage interprété.

  2. #22
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Par défaut
    Alors j'aurai bien aimé coder dans un langage interprété alors !
    Du coup il faut que je me demerde pour comprendre les conteneurs à plusieurs types, comme je disais au départ, de la grosse bidouille en quelques sortes ...

  3. #23
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    tu peux utiliser boost::map je crois.

    tu fais correspondre "int" à int, et ainsi de suite....

  4. #24
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Par défaut
    ouais mais map, c'est d'un type à un autre ..
    par exemple :
    std::map<std::string,int> m;

    mais mon m ne sera jamais un type ... ca reste une simple variable (de type int ici)

  5. #25
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    boost::map ? Jamais entendu parler. Et quand à std::map, ça sert à associer des clés à des valeurs. Tu ne pourras jamais en C++ stocker un "type", à part en méta-programmation.

    Quant à savoir s'il faut que tu changes de langage, ou que tu interface ton programme C++ avec un langage interprété, ça dépend du rôle du programme.

    Ton maître de stage ne peut-il pas t'orienter clairement pour ce problème ?

  6. #26
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Par défaut
    Mon maître de stage est parti en vacances hier, il faut que je me débrouille tout seul maintenant quant aux décisions à prendre. (pendant 2 semaines)

    Qu'est-ce que tu entends par interfacer mon programme ?

  7. #27
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Reprenons le problème à la base :
    Tu as un nombre fini de variables à retranscrire respectivement chacune de chaîne de caractère à leur type statique en C++.
    Sachant de plus que le type est donné dans le message pour chaque variable.
    Le but étant d'appeler une fonction en passant les variables dans leurs types respectifs.
    Est-ce bien ça? Si c'est le cas, on peut peut-être entrevoir une solution.

  8. #28
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Par défaut
    Oui je pense que tu as bien compris, j'ai le nom de ma fonction, le type des parametres et les valeurs que doivent prendre les parametres dans des chaines string. J'ai un nombre limité de parametres(peut varier d'une fonction à l'autre mais si ca peut marcher pour un nombre fixe c'est deja pa mal, je teste avec 4 parametres en ce moment).
    Tu penses avoir une solution ?

  9. #29
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Alors tout d'abord, il faut trouver un moyen d'associer à des std::string n'importe quelle fonction de n'importe quel prototype ...
    Ensuite, on pourrait en fait associer à cette std::string une structure décrivant en fait la fonction et permettant de la manipuler plus flexiblement, en ajoutant un niveau d'abstraction entre ta fonction et ta réception de messages.
    Cela permettrait une manip simple.

  10. #30
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Par défaut
    Oui mais ta solution nécessite un listing de toutes les fonctions existantes, n'est-ce pas ? Enfin, une structure pour chaque fonction que je veux appeler?
    Je ne connais pas à l'avance ces fonctions que je suis censé appeler, je ne connais pas leur nombre non plus. Elles ne sont pas encore écrites, un collègue va s'en occuper un jour ........

  11. #31
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Je peux me tromper, mais à mon avis ce que tu cherches à faire est tout simplement impossible à réaliser en C++. Appeler une fonction dont on ne connait même pas le prototype, je ne vois pas comment ce serait possible.

  12. #32
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Mais tu y as obligatoirement accès à ces fonctions non?
    Donc on peut bien faire une map pour gérer tout ça non?

  13. #33
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Le truc c'est qu'il faut disposer d'une map, et en plus faire quelque chose du genre :
    #define REGISTER_FUNC(RTYPE, ARGLIST, NAME) \
    // on insère la fonction dans la map et on écrit RTYPE NAME(ARGLIST)

    Enfin je partirais sur quelque chose du genre... Une espèce de réflexion "semi-automatisée" des fonctions.

  14. #34
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Par contre dans mon précédent message, je ne dis pas comment faire pour que la map stocke des fonctions dont le prototype est entièrement variable ... Et là est le problème... Boost.Any combiné à autre chose peut-être... Je ne sais pas vraiment.

    (Laurent > il faudrait faire un sujet de FAQ traitant de ce problème, qui est souvent soulevé ici, et que chacun a rencontré je pense dans des projets)

  15. #35
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 33
    Par défaut
    Oui je pensais vraiment que ca serait plus simple
    Merci en tout cas de vous pencher sur le problème!

    Laurent : mon programme ne connait pas le prototype à l'avance, en effet, mais le message recu est correctement formaté, donc on peut connaitre le prototype, soit en lisant le message, soit en allant chercher la fonction par son adresse.(par mon getProcAddress qui fonctionne bien qui me récupère l'adresse de la fonction à partir de son nom)
    Ca ne suffit pas?

    Alp : Je vais regarder ce que tu m'as conseillé, voir si une idée me vient ...

    merci merci

  16. #36
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Laurent : mon programme ne connait pas le prototype à l'avance, en effet, mais le message recu est correctement formaté, donc on peut connaitre le prototype, soit en lisant le message, soit en allant chercher la fonction par son adresse.(par mon getProcAddress qui fonctionne bien qui me récupère l'adresse de la fonction à partir de son nom)
    Ca ne suffit pas?
    Je parlais de connaître le prototype à la compilation. Car à un moment où un autre tu devras faire un appel de fonction, et sans le prototype de celle-ci... A part pousser les paramètres sur la pile directement en ASM, je vois pas trop comment on peut faire.

    (Laurent > il faudrait faire un sujet de FAQ traitant de ce problème, qui est souvent soulevé ici, et que chacun a rencontré je pense dans des projets)
    Une question de FAQ sur "comment définir un type à l'exécution" ?

  17. #37
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Laurent veut dire qu'à un moment il va falloir écrire
    ou
    Et le problème c'est justement écrire a,b,c,d, de savoir qu'il y a 4 arguments et de les passer à la fonction ...
    Donc ce qui a l'air faisable c'est de regrouper par prototypes tes fonctions... Peut-être.

    Laurent > Non, mais plutôt genre "Pourquoi on ne peut pas?" et orienter sur des voies qui s'en rapprochent. Enfin c'était juste une idée

  18. #38
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Citation Envoyé par Alp
    Laurent > Non, mais plutôt genre "Pourquoi on ne peut pas?" et orienter sur des voies qui s'en rapprochent. Enfin c'était juste une idée
    C'est une question qui revient assez souvent, donc effectivement un petit topo dans la FAQ ne ferait pas de mal

  19. #39
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Tu t'en occupes ? Je ne sais pas comment faire ni je pense avoir les droits.

  20. #40
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Citation Envoyé par Alp
    Tu t'en occupes ? Je ne sais pas comment faire ni je pense avoir les droits.
    C'est bon on s'en charge, je l'ai poussé dans notre liste des Q/R à rédiger.

    Par contre lorsque tu veux proposer une contribution il n'y a pas de souci : on a maintenant un sous-forum Contribuez, dans lequel tu peux poster une Q/R pour la FAQ, un code source, un tutoriel, des corrections, etc.

Discussions similaires

  1. [Tableaux] Programme de multiplication enfant
    Par isa150183 dans le forum Langage
    Réponses: 12
    Dernier message: 02/08/2006, 23h16
  2. [Tableaux] Le type Ensemble existe-t-il ?
    Par petitnuage dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2006, 20h21
  3. [Tableaux] bouton radio multiples
    Par baillador dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 10h14
  4. Réponses: 6
    Dernier message: 17/03/2006, 12h23
  5. Réponses: 2
    Dernier message: 09/02/2006, 18h20

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