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

MFC Discussion :

Template & Visual c++


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 23
    Par défaut Template & Visual c++
    Bonjour,

    j'ai un petit souci de compilation en utilisant un template tout simple voici mon bout de code :

    Dans le .h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class MyClass
    {
     
       template<typename T>
       BOOL isFI(const std::string &Str);
     
    public :
     
       MyClass();   
    }
    Dans le .cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    MyClass::MyClass
    {
       s="2.3"
       isFI<int>(s);        // ne compile pas, erreur : "type 'int' unexpected"
       isFI<float>(s);     // ne compile pas, erreur : "type 'float' unexpected"
    }
     
    template<typename T>
    BOOL MyClass::isFI(const std::string &Str)
    {
    	std::istringstream iss (Str);
    	T tmp;
    	return (iss>>tmp) && (iss.eof());
    }
    Est ce que je dois défninir T avec int et float en utilisant un typedef ?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Par défaut
    pour les templates cpas des classes qu'il faut lui passer lkui passer ?

  3. #3
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 23
    Par défaut
    tu peux le faire mais ce n'est pas mon but.

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MyClass::MyClass 
    { 
       s="2.3"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MyClass::MyClass() 
    { 
       std::string s="2.3" ;

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Par défaut
    Bonjour excuse moi, je voudrai bien t'aider mais...
    je ne comprends pas vraiment ce que tu tentes de faire.

    Dans ton .h tu as une fonction qui renvoit un booléèn et un constructeur.

    Dans ton cpp tu initialise s à 2.3 hors s n'est définit nulle part.

    Essuite ta fonction (je sais c'est pas le terme exact) renvoie (ou est sensée renvoyer) un bouléèn que tu ne conserves nulle part....

    de plus la méthode étant privée, tu n'y accèderais même pas de l'extérieur.....

    Vu que toutes les fonctions et variables que tu utilises sont typées le template n'a pas lieu d'être.


    Donc voilà j'ai pas trop compris. Essaie de dire ce que tu cherches à faire. Tu veux un objet qui une fois instancié puisse dire si le string passé en paramètre est un entier ou un floatant? (la je t'assure que je fais carburer mon imagination parce que ça correspond pas à ton code ).
    Enfin explique.

  6. #6
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 23
    Par défaut
    J'ai voulu simplifier au maximum mais peut etre trop !

    Oui, pour simplifier je ne conserve pas le résultat de la méthode.
    Pareil, je n'ai pas déclarer mon string mais en réalité c'est fait.
    Non, je n'accéde pas à la méthode de l'extérieur.
    Oui effectivement, je veux regarder si mon string est un float ou un int.

    Je sais que je pourrais créer une fonction externe à ma classe et dans ce cas ca marche...

    D'autres solutions peut etre ?

  7. #7
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Par défaut
    en fait si tu veux savoir si ton string est un float ou un int tu n'as pas besoin de template. Les templates justement c'est pour être utiliser avec n'importe quoi, n'importe quel type de donnée.
    Comme faire une fonction de trie capable de trier n'importe quel type d'objet, là tu mettrais un template. Mais si tu sais déjà à l'avance que ce sont des string que tu testes c'est vraiment pas nécessaire.
    D'ailleurs un string en int ou float, je me demande si ça n'existe pas....

    Me semble que tu peux, au minimum, tester si chaque caractère du string est compris dans les chiffres ou est un point ou une virgule.

  8. #8
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Avec les deux petites corrections que j'ai expédiées plus haut, ton code compile chez moi. A l'exécution, en instantiant un objet MyClass, isFI est effectivement appelée deux fois et met dans l'objet local temp la première fois 2 et la seconde 2.3

  9. #9
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 23
    Par défaut
    Ah oui ? bon je vais réessayer en recréant un projet simple...
    Merci en tous cas.

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    La vraie question ce serait plutôt : compiles-tu avec VC6 / VC7.0, ou bien une version plus récente ( 7.1 ou 8 ) ?

    Dans le premier cas il ne faudra pas s'étonner, la gestion des fonctions membres templates est plus que désastreuse.

  11. #11
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 23
    Par défaut
    VC6 !!!

    Je vais laisser tomber les templates dans les fonctions membres !

    Merci à tous

  12. #12
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu as tout de même un espoir : parfois cela marche lorsque tu déclares et implémentes la fonction en une seule fois (à l'intérieur de la définition de la classe, donc). Tu peux toujours essayer.

  13. #13
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 23
    Par défaut
    Sympa du tuyau , j'essayerais lundi.

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut
    Salut

    Citation Envoyé par Loulou24
    La vraie question ce serait plutôt : compiles-tu avec VC6 / VC7.0, ou bien une version plus récente ( 7.1 ou 8 ) ?

    Dans le premier cas il ne faudra pas s'étonner, la gestion des fonctions membres templates est plus que désastreuse.
    Juste en passant:
    Que veut-tu dire? je ne dis pas que ce que tu dis est faux (j'en suis incapable) mais etant aussi sous VC6 j'aimerais en savoir un peu plus.
    J'ai deja compiler des classe template sans probleme apparent.
    Dans le premier cas il ne faudra pas s'étonner, la gestion des fonctions membres templates est plus que désastreuse.
    Au niveau creation de l'executable?
    Ou bien ca ne compile pas?

  15. #15
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    VC6 échoue souvent lorsqu'il s'agit de compiler des templates. Attention pour les cas "simples" il n'y a pas de problème, mais pour ce qui est des fonctions membres templates là ça pose déjà plus de problèmes. Je n'ai plus VC6 depuis quelques temps donc je ne peux pas illustrer ça avec des exemples, mais je t'invite à essayer toutes sortes de choses pour voir les limites du compilo.

    Au passage, ces lacunes sur les templates expliquent en partie les lacunes au niveau de la STL.

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 646
    Par défaut
    Oki!
    J'en suis encore au cas simple alors

Discussions similaires

  1. Choix Template REST Visual Studio
    Par barnet dans le forum Windows Communication Foundation
    Réponses: 3
    Dernier message: 26/07/2011, 20h20
  2. webpart template et visual studio 2008
    Par bakabdel dans le forum SharePoint
    Réponses: 9
    Dernier message: 04/01/2010, 17h23
  3. Méthode pour installer templates sur visual
    Par s-ehtp dans le forum C#
    Réponses: 3
    Dernier message: 09/07/2009, 19h14
  4. Réponses: 1
    Dernier message: 22/08/2007, 15h48
  5. Dérivation de classe template en visual c++ 2003
    Par fabienpot dans le forum MFC
    Réponses: 7
    Dernier message: 23/11/2005, 16h31

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