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 :

Appel d'une fonction template de façon explicite


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Par défaut Appel d'une fonction template de façon explicite
    Bonjour,


    J'ai une classe classique qui doit contenir une fonction static avec un template.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    template < class T > static BOOL GetPassagesByEcranPub ( std::vector < FichePassageGeneric > vPassages, long lIdEcranPub );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    template < class T >
    BOOL dal::GetPassagesByEcranPub ( std::vector < FichePassageGeneric > vPassages, long lIdEcranPub )
    {
      // C'est dans cette fonction que le template va intervenir
      vector<T> vTmp;
    }
    Ca compile. Pas de soucis.

    Par contre je n'arrive pas appeller cette fonction correctement, j'ai essayé de le faire de façon explicite mais ça ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetPassagesByEcranPub<TDbFichePassageVideo> ( vPassages, lEcranPub );
    J'aimerai bien un conseil.

    Merci d'avance

  2. #2
    Membre éclairé Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Par défaut
    Oups j'ai oublié de vous donner le message d'erreur que j'ai lors de la compile
    error C2275: 'TDbFichePassageVideo' : illegal use of this type as an expression

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    il manque la référence à la classe ou est définit la fonction .
    si on a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class x
    {
    static void fct();
    };
    //on aura a l'appel : 
    x::fct();

  4. #4
    Membre éclairé Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Par défaut
    Effectivement dans le principe il manque cette référence mais la fonction qui appelait la fonction "GetPassagesByEcranPub" était déjà une static de la classe "dal"

    J'ai tout de même essayer en mettant ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dal::GetPassagesByEcranPub<TDbFichePassageVideo> ( vPassages, lEcranPub, pConnect );
    et j'ai toujours la même erreur.

  5. #5
    Membre éclairé Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Par défaut
    Pour palier à ce problème, j'ai mis un paramètre bidon qui me permet de transmettre le type du template

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    template < class T > static BOOL GetPassagesByEcranPub ( std::vector < FichePassageGeneric > vPassages, long lIdEcranPub, otl_connect * const pConnect, T * pUnused );
    et voici l'appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dal::GetPassagesByEcranPub ( vPassages, lEcranPub, pConnect, &oPassageVideo )
    Mais je pensais qu'il était possible de mettre explicitement le type du template.

  6. #6
    Membre éclairé Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Par défaut
    Existe-t'il une méthode d'utiliser les templates de cette manière mais sans passer un paramètre bidon qui ne sert à rien ?

  7. #7
    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 vanitom Voir le message
    Oups j'ai oublié de vous donner le message d'erreur que j'ai lors de la compile
    Quand le sage montre la lune, l'imbécile regarde le doigt
    Peux-tu nous montrer la ligne de ce code d'erreur ? TDbFichePassageVideo est-il défini au moment où tu fait l'appel?

Discussions similaires

  1. [AJAX] Appeler une fonction Ajax de façon récursive ?
    Par tintin72 dans le forum jQuery
    Réponses: 6
    Dernier message: 18/09/2013, 10h48
  2. [1.x] appelle d'une fonction dans le template
    Par scarabe088 dans le forum Symfony
    Réponses: 1
    Dernier message: 13/09/2011, 21h56
  3. Appel d'une fonction/TThread de façon paramétrique
    Par noahsaga dans le forum C++Builder
    Réponses: 17
    Dernier message: 15/04/2011, 17h15
  4. Appel d'une fonction de façon paramétrique
    Par noahsaga dans le forum C++
    Réponses: 1
    Dernier message: 01/04/2011, 07h33

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