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 :

Pointeur sur une fonction template


Sujet :

Langage C++

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 49
    Points : 19
    Points
    19
    Par défaut Pointeur sur une fonction template
    Bonjour,

    En gros j'ai le code suivant :

    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
     
    template<typename T>
    static ECBCase* CreateCase(int x)
    {
    	return new T;
    }
     
    static struct
    {
    	char c;
    	ECBCase* (*func) (int);
    	uint flags;
    } case_type[] = {
     	{ 'v', CreateCase<ECBVille>, C_VILLE            },
    	{ 'V', CreateCase<ECBVille>, C_VILLE|C_CAPITALE },
    	{ 'm', CreateCase<ECBMer>,   C_MER              },
    	{ 't', CreateCase<ECBTerre>, C_TERRE            },
    	{ 'p', CreateCase<ECBPont>,  C_PONT             }
    };
    Bien evidement ça ne compile pas, j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Map.cpp:48: erreur: no matches converting function 'CreateCase' to type 'class ECBCase* (*)(int)'
    Map.cpp:32: erreur: candidates are: template<class T> ECBCase* CreateCase(int)
    Alors j'aimerais savoir comment faire donc pour faire ce pointeur vers un prototype de fonction template.

    Merci.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Avec une class/struct template et une fonction statique ça devrait passer.
    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
    template<typename T> 
    struct ECBCaseCreator 
    { 
        static ECBCase* CreateCase(int)
        {
            return new T;
        }
    };
     
    static struct 
    { 
       char c; 
       ECBCase* (*func) (int); 
       uint flags; 
    } case_type[] = { 
        { 'v', &ECBCaseCreator::CreateCase<ECBVille>, C_VILLE            }, 
       { 'V', &ECBCaseCreator::CreateCase<ECBVille>, C_VILLE|C_CAPITALE }, 
       { 'm', &ECBCaseCreator::CreateCase<ECBMer>,   C_MER              }, 
       { 't', &ECBCaseCreator::CreateCase<ECBTerre>, C_TERRE            }, 
       { 'p', &ECBCaseCreator::CreateCase<ECBPont>,  C_PONT             } 
    };
    Mais tu doit pouvoir faire un peu mieux en enrichissant cette struct pour quelle accepte en paramètre les arguments que tu donnes dans un tableau.

  3. #3
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut Re: Pointeur sur une fonction template
    Citation Envoyé par Progs
    Bien evidement ça ne compile pas, j'ai l'erreur suivante
    Ca ne me semble pas aussi évident que cela. En ajoutant ce qui manque, ça compile chez moi avec g++ et como.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

Discussions similaires

  1. Pointeur sur une fonction membre templatée et +
    Par metagoto dans le forum Langage
    Réponses: 2
    Dernier message: 09/08/2013, 02h05
  2. Réponses: 5
    Dernier message: 29/06/2006, 17h23
  3. Réponses: 3
    Dernier message: 16/05/2006, 18h22
  4. Pointeur sur une fonction
    Par bogosse dans le forum C
    Réponses: 12
    Dernier message: 16/02/2006, 14h16
  5. Probleme de pointeur sur une fonction
    Par nicky78 dans le forum C
    Réponses: 2
    Dernier message: 23/05/2004, 20h26

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