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 :

stockage de template sans spécialisation préalable


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 4
    Par défaut stockage de template sans spécialisation préalable
    Bonjour à tous,

    J'ai une classe «template» de la forme:
    template<typename T> class X;

    et je souhaiterais créer une liste contenant des objets X pouvant être crées à partir de types T différents, c'est-à-dire une liste contenant par expemple un X<int>, puis un X<double>, etc.

    Est-ce que quelqu'un sait comment faire cela ?

    Merci d'avance.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 48
    Par défaut
    [EDIT]
    Réponse à coté de la plaque !
    [/EDIT]

    Bonjour,
    Tu peux par exemple associer un conteneur de la stl "static" à ta classe.
    Par exemple pour un conteneur "list"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include<list>
    ....
    template<typename T> 
    class X
    {
    public: //(ou private ?)
      static std::list< X<T> > list_;
    ....
    };
     
    template<typename T> X<T>::list_ = std::list< X<T> >();

  3. #3
    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
    Salut,
    Plusieurs possibilités selon ce que tu veux en faire :
    -> Type erasure si tu souhaites manipuler les différents objets de la même façon : Mariage de la Programmation Orientée Objet et de la Programmation Générique : Type Erasure par Alp

    -> Boost.Any ou Boost.Variant si ce sont vraiment des choux et des carottes et que tu vas les manipuler différemment. (F.A.Q Qu'est-ce que boost::any et boost::variant et quand les utiliser ?)

  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 omc24 Voir le message
    Bonjour,
    Tu peux par exemple associer un conteneur de la stl "static" à ta classe.
    Par exemple pour un conteneur "list"
    Cela va créé une liste par instance de la classe template : une pour X<int>, une pour X<double>, etc. Je n'ai pas compris la question du PO comme ça.

  5. #5
    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
    Citation Envoyé par 3DArchi Voir le message
    Cela va créé une liste par instance de la classe template : une pour X<int>, une pour X<double>, etc. Je n'ai pas compris la question du PO comme ça.
    Ce n'est effectivement pas ce que le PO a demandé. La réponse qu'il cherche est probablement la type erasure, et dans le "pire" des cas any ou variant effectivement.

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 4
    Par défaut
    Effectivement, c'était bien la type erasure qu'il me fallait (j'ai même réussi à y penser tout seul entre temps !)

    Merci beaucoup

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

Discussions similaires

  1. [Template] erreur spécialisation explicite
    Par Elstak dans le forum C++
    Réponses: 9
    Dernier message: 16/10/2008, 11h45
  2. Réponses: 4
    Dernier message: 15/10/2008, 09h33
  3. [MySQL] Créer une table de stockage de paramètre sans plusieurs entrées
    Par patrick58 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/02/2008, 18h03
  4. Supprimer les doublons sans tri préalable des données
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 20/12/2007, 08h16
  5. Supprimer les doublons avec ou sans tri préalable
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 0
    Dernier message: 19/12/2007, 20h24

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