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 :

[template] petit probleme d'instanciation


Sujet :

Langage C++

  1. #41
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 345
    Par défaut
    Bah non, ça l'est pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    template <typename T, bool>
    void totomachintruc<T, ???>::create()
    Le compilo a besoin de savoir de quelle spécialisation tu lui parles.
    C'est comme si tu définissais une fonction qui prend un int, que tu veux utiliser, mais sans le nommer. Ce n'est pas possible.

    Edit: bon après tu peux spécialiser explicitement quand le bool est à true et à false. Dans ce cas là tu peux carrément te débarrasser du bool déclaré dans la liste de paramètres template.
    Mais ce n'est pas une bonne pratique ; en effet à part les cas où tu spécialises en fonction d'un booléen (et donc là où il n'y a que deux cas possibles) il te faudra spécialiser dans le cas "autre chose que ce qui est prévu explicitement", le "cas par défaut" en somme. Dans ces cas là tu ne peux pas te passer du nom du paramètre template (par exemple, ici, impossible de ne pas nommer le typename "T").

  2. #42
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Par défaut
    merci

    tu connais un bon bouquin qui explique vraiment les templates en c++
    avec ce genre de chose ?

    et si j'ai bien compris ce que tu as dit (dans ton edit) on pourrait faire

    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
    template <typename T, bool U = __is_abstract(T)>
    struct create_helper4 {
      static T* create ();
    };
     
    template <typename T>
    T* create_helper4<T, 0>::create(){
            std::cout << "create on create_helper4 \n";
            return new T();
    }
     
    template<typename T>
    struct create_helper4<T, 1> {
            static T* create();
    };
     
    template<typename T>
    T* create_helper4<T, 1>::create() {
            std::cout << "Cannot create and Abstract Base Class!\n";
                            std::cout << " Create failed on type_info::name() = "
                                            << typeid(T).name() << "\n";
            return 0;
    }

  3. #43
    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
    Sans être un bouquin, notre faq C++ comprend une section dédiée aux templates, qui t'expliquera déjà pas mal de choses.

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Petit problème de fork
    Par osmose22 dans le forum Linux
    Réponses: 7
    Dernier message: 18/03/2007, 21h10
  2. [TP]petit probleme avec solution
    Par pompompolom dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 02/12/2004, 19h48
  3. petit probleme avec l'éditeur de builder
    Par qZheneton dans le forum C++Builder
    Réponses: 2
    Dernier message: 28/10/2004, 16h19
  4. petit probleme de requete
    Par nico33307 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 25/08/2004, 11h36
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

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