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 :

Colle sur l'utilisation délirante du mot clé template


Sujet :

Langage C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Points : 106
    Points
    106
    Par défaut Colle sur l'utilisation délirante du mot clé template
    Au delà du titre , voici un code où j'aurais bien besoin d'aide : la ligne 40, qui contient un appel de fonction nécessite le mot clé template? en effet elle ne compile pas sinon (gcc 4.7)!!

    Je n'avais jamais vu ça avant, et c'est le seul moyen pour que le code compile.
    Existe-t-il un moyen de se séparer, et à quoi sert-il exactement pour cet appel de fonction?

    Le code est purement pour illustrer le problème.

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    #include <memory>
     
    struct opengl {};
     
    struct opengl_window {};
     
     
    template<typename api_type>
    struct renderer;
     
    template<>
    struct renderer<opengl>
    {
        typedef opengl_window render_window_type;
     
        template<typename T, typename... Args>
        std::shared_ptr<T> make(Args&&... args)
        {
            return std::make_shared<T>( std::forward<Args>(args)... );
        }
    };
     
     
     
    template<typename api_type>
    struct app
    {
        typedef renderer<api_type> renderer_api_type;
     
        typedef typename renderer_api_type::render_window_type    render_window_api_type;
     
     
        std::shared_ptr<renderer_api_type> m_renderer;
        std::shared_ptr<render_window_api_type> m_window;
     
        void test()
        {
            m_renderer = std::make_shared<renderer_api_type>();
     
            m_window = m_renderer->template make<render_window_api_type>();
            //m_window = m_renderer->make<render_window_api_type>();
        }
    };
     
     
     
     
    int main()
    {
        app<opengl> a;
        a.test();
     
        return 0;
    }
    Merci d'avance!

    Bonne fêtes à tous et à toutes!

  2. #2
    En attente de confirmation mail

    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 : 33
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Points : 3 311
    Points
    3 311
    Par défaut
    Quand tu as un objet d'un type dépendant d'un paramètre template, si tu appels une fonction membre template sur cet objet, il faut indiquer au compilateur que cette fonction est template grâce à ce mot-clé. C'est une logique comparable à celle de typename.

    FaQ Comeau (en google cache) section 13 :
    http://webcache.googleusercontent.co...&ct=clnk&gl=fr

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Points : 106
    Points
    106
    Par défaut
    Thanks!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/11/2010, 17h00
  2. Question sur l'utilisation de wget
    Par berry dans le forum Réseau
    Réponses: 7
    Dernier message: 24/05/2007, 22h46
  3. Question sur l'utilisation du mot réservé static
    Par flash2590 dans le forum Langage
    Réponses: 4
    Dernier message: 10/04/2006, 00h20
  4. Compteur sur l'utilisation des index
    Par hkhan dans le forum Administration
    Réponses: 11
    Dernier message: 14/10/2004, 17h57
  5. [CR] Infos sur l'utilisation de dll
    Par step dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 09/08/2002, 11h35

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