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 avec argument template


Sujet :

Langage C++

  1. #1
    Membre régulier
    Homme Profil pro
    Second de cuisine
    Inscrit en
    Avril 2005
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Second de cuisine
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2005
    Messages : 193
    Points : 99
    Points
    99
    Par défaut template avec argument template
    Bonjour !

    Je cale devant une erreur de GCC, j'aurais besoin de vos lumières.
    Donc j'ai une classe qui contient un pointeur naturiste, et une fonction qui est censée le creer !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        template<typename Protocol>
        class session
        {
        protected:
            handlers::packet_handler_impl* m_handler;
        public:
            template<template<typename, typename, bool> class Handler, typename Engine, bool EnableClient, typename... Args>
            session<Protocol>* create_handler(Args&... args) { m_handler = new Handler<Protocol, Engine, EnableClient>(args...); return this; }
         };
    Ensuite, j'ai donc une classe "handler", certe moche...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            template<typename Protocol, typename Engine, bool EnableClient>
            class basic_client: public packet_handler<basic_client<Protocol, Engine, EnableClient>> { };

    Et je creer le handler de cette facon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (new sessions::client<Protocol>(*new_socket))->create_handler<handlers::basic_client<Protocol, null_class, disable_client>, null_class, disable_client>(new_socket)
    null_class est une classe vide, class dummy {};

    Le compilo me sort alors... quand je creer le handler
    /media/data/dev/projects/baws/baws/net/server_engine_inl.h|37|error: expected ‘(’ before ‘,’ token|
    /media/data/dev/projects/baws/baws/net/server_engine_inl.h|37|error: expected primary-expression before ‘,’ token|
    Sauriez vous m'eclairer?
    nico

  2. #2
    Membre habitué
    Homme Profil pro
    Doctorant en Astrophysique
    Inscrit en
    Mars 2009
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Astrophysique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2009
    Messages : 312
    Points : 176
    Points
    176
    Par défaut
    Salut.

    J'aurais tendance à dire qu'il faudrait rajouter un keyword template quelque part dans la ligne qui plante. Pourrais-tu déjà la remplacer par 2 lignes: l'une pour déclarer un pointeur, l'autre pour exécuter la fonction, histoire de savoir quelle partie plante ?

  3. #3
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 739
    Points : 3 627
    Points
    3 627
    Par défaut
    Le premier paramètre de la template: handlers::basic_client<Protocol, null_class, disable_client> n'est pas un type template. Il faut juste mettre handlers::basic_client.
    Par contre j'avoue que l'erreur n'aide pas beaucoup alors ce n'est peut-être pas que ça.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Le problème, c'est qu'on ne sait pas à quoi correspond la ligne 37.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/07/2011, 08h35
  2. Réponses: 11
    Dernier message: 20/11/2010, 13h08
  3. Template C++ constructeur avec arguments
    Par oc_alex86 dans le forum Débuter
    Réponses: 6
    Dernier message: 06/11/2010, 14h45
  4. Réponses: 19
    Dernier message: 23/12/2009, 19h22
  5. Réponses: 15
    Dernier message: 21/08/2006, 01h41

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