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 :

Templatisation de typedef ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut Templatisation de typedef ?
    Hello,

    Est-il possible de faire un typedef templatisé pouer quelque quelque chose comme ça ?

    Merci.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    template<class T> struct MaMethodeTrait
    {
       typedef T* (*MonTypeDeMethode)(const char *);
    };
    Puis ensuite:
    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
    int* UneFonction(const char*)
    {
       return NULL;
    }
    char* UneAutreFonction(const char*p)
    {
       return NULL;
    }
     
    typedef unsigned char T[5];
    int main()
    {
       MaMethodeTrait<int>::MonTypeDeMethode L_pfnMaMethode;
       L_pfnMaMethode = UneFonction;
       L_pfnMaMethode("t");
       MaMethodeTrait<char>::MonTypeDeMethode L_pfnMaMethode2;
       L_pfnMaMethode2 = UneAutreFonction;
       L_pfnMaMethode("a");
       return 0;
    }

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Hmmm... Merci pour cet exemple, mais je crois qu'il ne correspond pas à mon besoin, parce que j'ai mal formulé la chose.

    En fait, je veux templatiser l'expression (que je sais incorrecte) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef (T* (*MonTypeDeMethode)(const char *)) version_courte;
    pour une utilisation dans ce gerne là :

    Si c'est effectivement ce que tu avais compris, c'est que je suis très mauvais. :-)

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par oodini Voir le message
    Si c'est effectivement ce que tu avais compris, c'est que je suis très mauvais. :-)
    J'avais compris, mais loin de moi d'oser mettre en doute tes capacités.
    A part la solution que je t'ai donnée ou l'utilisation d'une macro, je ne vois pas.

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    C'est moi qui ai mal du expliquer ma méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    template<class T> struct MaMethodeTrait
    {
       typedef T* (*version_courte)(const char *);
    };
    Et ensuite, l'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaMethodeTrait::version_courte<T>

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    P.S.: j'ai quand même l'impression que tu as résolus ton problème de fabrique avec une solution qui te créés encore plus de problème (cette question et les questions dans boost)... Fais un petit tour sur la FAQ sur les politiques et les traits (merci Alp), je pense que cela pourra beaucoup t'apporter dans ce que tu es en train de faire.

  7. #7
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Tu ne peux pas avoir version_courte<T>, mais uniquement version_courte<T>::type.

  8. #8
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Petite faute de frappe (ou faute de petite frappe?). Dsl

  9. #9
    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
    Sinon, le template typedef tel que tu souhaiterais le faire va arriver avec C++0x

Discussions similaires

  1. [typedef] protection à travers les espaces de noms
    Par PINGOUIN_GEANT dans le forum C++
    Réponses: 7
    Dernier message: 02/02/2005, 20h21
  2. [typedef]Question bete...
    Par danael dans le forum C
    Réponses: 7
    Dernier message: 30/08/2004, 12h30
  3. Réponses: 3
    Dernier message: 20/12/2003, 19h53
  4. Réponses: 6
    Dernier message: 26/01/2003, 13h45
  5. Sortir un typedef d'une classe
    Par Theophil dans le forum C++Builder
    Réponses: 13
    Dernier message: 03/07/2002, 17h21

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