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 :

Probleme avec fonction template and classe non template


Sujet :

Langage C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 157
    Points : 78
    Points
    78
    Par défaut Probleme avec fonction template and classe non template
    Bonjour,

    mon code tourne, mais y'a un truc qui me gene. J'ai cree une classe "normale" (non template) qui contient une fonction template:

    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
    class ConfigFile
    {
    public:
    	ConfigFile(CString Filename,LogManager *Log)
    	{
    		this->Filename = Filename;
    		this->Log = Log;
     
    		bInitialized = TRUE;
    	}
     
    	virtual ~ConfigFile()
    	{
    	}
     
    private:
    	bool bInitialized;
    	CString Filename;
    	LogManager *Log;
     
    	CString _CSTRING;
    	CHAR _CHAR;
    	BOOL _BOOL;
    	INT8 _INT8;
    	INT16 _INT16;
    	INT32 _INT32;
    	LONG32 _LONG32;
    	UINT8 _UINT8;
    	UINT16 _UINT16;
    	UINT32 _UINT32;
    	ULONG32 _ULONG32;
    	FLOAT32 _FLOAT32;
    	FLOAT64 _FLOAT64;
     
    	INT16 ParamType;
     
    public:
    	template <class MyType>	UINT16 ParseFile (CString ParamID,MyType *Param)
    	{
    	...
    	}
    };
    Lorsque j'appelle ma methode template dans un autre code source, je procede comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ConfigFile MyCfg("C:\\TestReadParse.ini",MyLM);
     
    MyCfg.ParseFile("Test_INT8",&Test_INT8);
    Mais j'aimerais specifier le type utilise dans ma fonction template, comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyCfg.ParseFile <__int8> ("Test_INT8",&Test_INT8);
    Mais la, ca compile pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error C2062: type '__int8' unexpected
    C'est normal ou bien j'ai un bug dans mon code?

    Merci d'avance...

    G-treize

  2. #2
    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
    Points : 13 017
    Points
    13 017
    Par défaut
    Ca dépend du type de ta variable Test_INT8. Le comportement est le 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
    20
    21
     
    class A
    {
    public:
    	A(){}
    	template<class T> void MaFonction(int P_i, T *P_pT)
    	{
    		P_i++;
    		(*P_pT)++;
     
    	}
    };
    void B::ACaller()
    {
    	A a;
    	int L_i;
    	a.MaFonction(3,&L_i); // OK
    	a.MaFonction<int>(3,&L_i); // OK
    	a.MaFonction<char>(3,&L_i);// KO
    	a.MaFonction<char>(3,(char*)&L_i); // OK
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 157
    Points : 78
    Points
    78
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Ca dépend du type de ta variable Test_INT8.
    Test_INT8 est aussi du type '__int8'

  4. #4
    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
    Points : 13 017
    Points
    13 017
    Par défaut
    La vérité est ailleurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        ConfigFile MyCfg("C:\\TestReadParse.ini",NULL);
        __int8 Test_INT8;
        MyCfg.ParseFile("Test_INT8",&Test_INT8);
        MyCfg.ParseFile <__int8> ("Test_INT8",&Test_INT8);
    Ca compile chez moi sous Visual et sous devcpp. Ton problème doit être ailleurs. Il manque alors quelques infos...

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/08/2014, 17h29
  2. Réponses: 18
    Dernier message: 01/03/2012, 10h34
  3. Réponses: 6
    Dernier message: 21/07/2009, 13h53
  4. Réponses: 3
    Dernier message: 09/04/2009, 11h30
  5. Méthode template dans classe non template ?
    Par shenron666 dans le forum Langage
    Réponses: 12
    Dernier message: 04/09/2006, 17h50

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