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

C++ Discussion :

Sp�cialisation d'une fonction membre


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    31
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 31
    Par d�faut Sp�cialisation d'une fonction membre
    Bonjour tout le monde.
    Voil� j'ai un souci pour compiler le bout de programme 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
    22
    23
    24
    25
    26
    27
    #include <iostream>
    using namespace std;
     
    	/**Création d'un patron de class**/
    template <class T> class point
    {
    		T x,	T y;
    	public:
    		point(T abs = 0, T ord = 0){ x = abs;	y = ord;}
    		void affiche();
    };
    	/**Définition de la fonction affiche**/
    template <class T> void point<T>::affiche()
    {
    	cout << "Coordonnees : "<< x <<" "<< y <<"\n";
    }
    	/**ajout d'une fonction spécialisée pour les caractères**/
    void point<char>::affiche ()
    {
    	cout << "Coordonnées : " << (int)x <<" "<<(int)y<<"\n";
    }
     
    main()
    {
    	point <int> ai(3, 0);			ai.affiche();
    	point <char> ac('d', 'y');		ac.affiche();
    }
    le compilateur(gcc) m'affiche :
    chap12_41.cpp:32: erreur: trop peu de patron de listes de param�tres
    la ligne 32 correspond au debut de la fonction void point<char>::affiche()

    J'ai pris ce code dans un livre (dans le cadre de mon apprentissage), j'ai v�rifier si je ne l'avais pas mal recopi� mais non, j'ai aussi compris l'explication du code d'apr�s le livre mais pourquoi �a ne compile pas ?, ce qui m'a conduit ici esp�rant resoudre le probl�me

    Merci � tous.

  2. #2
    Membre �prouv�
    Inscrit en
    Avril 2008
    Messages
    155
    D�tails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Par d�faut
    Hello,

    lorsque tu utilises des classes/fonctions template, de mon exp�rience il faut tout d�finir dans la classe elle m�me(dans le hpp)



    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
    	/**Création d'un patron de class**/
    template <class T> class point
    {
    	T x;
            T y;
    public:
        point(T abs = 0, T ord = 0){ x = abs;	y = ord;}
     
     
        template <class T> void affiche()
        {
            cout << "Coordonnees : "<< x <<" "<< y <<"\n";
        }
        void affiche ()
        {
            cout << "Coordonnées : " << (int)x <<" "<<(int)y<<"\n";
        }
    };

  3. #3
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

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

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Citation Envoy� par mdabire Voir le message
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    	/**Création d'un patron de class**/
    template <class T> class point
    {
    		T x,	T y;
    Ca, c'est pas correct...
    Citation Envoy� par mdabire Voir le message
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    	/**ajout d'une fonction spécialisée pour les caractères**/
    void point<char>::affiche ()
    {
    	cout << "Coordonnées : " << (int)x <<" "<<(int)y<<"\n";
    }
    L� non plus. La syntaxe pour une sp�cialisation est :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    template<> void point<char>::affiche ()
    {
    	cout << "Coordonnées : " << (int)x <<" "<<(int)y<<"\n";
    }
    Par contre, visual C++ accepte le code tel que tu l'as �crit, d'o� peut-�tre sa pr�sence dans ton livre (c'est quel livre au fait ?).

    Citation Envoy� par mdabire Voir le message
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

Discussions similaires

  1. R�ponses: 14
    Dernier message: 16/05/2006, 11h26
  2. R�ponses: 3
    Dernier message: 29/04/2006, 13h02
  3. R�ponses: 4
    Dernier message: 01/12/2005, 12h33
  4. R�ponses: 3
    Dernier message: 28/11/2005, 12h15
  5. Thread avec une fonction membre d'une classe
    Par SteelBox dans le forum Windows
    R�ponses: 6
    Dernier message: 01/03/2004, 01h15

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