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 :

Changer un type en un autre en compilation.


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Changer un type en un autre en compilation.
    Salut, je cherche depuis quelque temps déjà un exemple de code simple qui me permettrait de changer un type en un autre en compilation, exactement comme le système des placeholders, mais, avec du type erasure plutôt que avec auto. (qui n'est pas un type et donc, est instockable dans une classe ou bien un contenaire.)

    Je ne sais pas si cela est possible à faire en c++ mais si quelqu'un à un exemple je suis toujours preneur.

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Je ne suis pas certain de comprendre ce que tu cherches, mais boost.mpl (ou la méta-programmation de manière générale) me semble répondre à la question.

    Un exemple de ce que tu voudrais faire (même si la syntaxe est invalide) permettrait de clarifier ta demande.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut, un truc de ce genre :

    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Delegate<void> callback1(ptrfunc1, _1, _2, ...);
    Delegate<void> callback2(ptrfunc2, _1, _2, ...);
    std::map<std::string, Delegate<void>> callbacks;
    callbacks.insert(std::make_pair("CB1", callback1);
    callbacks.insert(std::make_pair("CB2", callback2);
    callbacks["CB1"].setParam(1, 2, ...)
    callbacks["CB2"].setParam(1, 2, ...)
    std::map<std::string, Delegate<void>>::iterator it;
    for (it = callbakcs.begin(); it != callback.end(), it++)
         it->second();
    }

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Je vois pas trop où est le caractère "à la compilation" dans ce que tu présentes. Ce sont des placeholders tout ce qu'il y a de plus normaux.

    Tu es en train de vouloir ajouter un système de placeholder à ton delegate ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Oui en fait c'est ça. Mais je sèche totalement.

    Je voudrais par exemple que si je passe un type au foncteur alors ça me retourner une valeur d'un autre type.

    Faut que j'utilise des classes de traits qui contienne une fonction qui appelle une fonction en fonction du type passé en paramètre template, c'est ça que fait boost::mpl ?

  6. #6
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    Le truc c'est qu'un placeholder ça s'utiliserait pas comme ça. Plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Delegate<void> callback1(ptrfunc1, _1, _2, ...);
    callback(1, 2, ...);
    Et que pour des raisons de typage, ça ressemblerait plus à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Delegate<void> callback1(ptrfunc1, _1<T1>(), _2<T2>(), ...);
    callback(1, 2, ...);
    Après pour l'implémentation, faut changer le type stocker dans le tuple pour qu'il erase aussi un placeholder et son utilisation pour lui faire suivre les paramètres d'appel sous forme de void* et qu'il retourne le bon avec le bon type.

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

Discussions similaires

  1. Changer le type de la classe /erreur de compilation
    Par xamarin dans le forum Général Java
    Réponses: 11
    Dernier message: 04/05/2014, 23h01
  2. comment changer le type d'une relation ?
    Par mitapi dans le forum Access
    Réponses: 5
    Dernier message: 21/05/2007, 10h29
  3. [Débutant] Changer le type d'une colonne
    Par david71 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 08/11/2005, 11h26
  4. Probleme Alter - Changer le type d'un champ
    Par Yphon dans le forum Bases de données
    Réponses: 3
    Dernier message: 09/09/2005, 13h58
  5. Changer el type d'une variable sql sous postgre8/admin
    Par smag dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 24/08/2005, 12h31

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