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 :

Template et appel de méthode


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut Template et appel de méthode
    Bonjour,

    Voici mon code source:
    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
    #include <vector>
    #include <iostream>
    #include <typeinfo>
    using namespace std;
     
    class A{};
    class B{};
    template <class T> class Test
    {
    	public:
    		Test()
    		{
    			cout<<"constructeur de: "<<typeid(T).name()<<", this: "<<this<<endl;
    		}
     
    		void salut()
    		{
    			cout<<"methode salut de: "<<typeid(T).name()<<", this: "<<this<<endl;
    		}
    };
     
    int main()
    {
    	std::vector<void *> vector;
    	vector.push_back(new Test<A>);
    	vector.push_back(new Test<B>);
     
    	for(int i=0; i<vector.size(); i++)
    	{
    		void *var = vector[i];
    		((Test<void *>*)var)->salut(); //comment appeler correctement salut() ?
    	}
     
    	return 0;
    }
    Voici le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    constructeur de: 1A, this: 0x9788008
    constructeur de: 1B, this: 0x9788028
    methode salut de: Pv, this: 0x9788008
    methode salut de: Pv, this: 0x9788028
    Comment faire pour appeler la methode 'salut()' avec le bon template pour obtenir ce résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    constructeur de: 1A, this: 0x9788008
    constructeur de: 1B, this: 0x9788028
    methode salut de: 1A, this: 0x9788008
    methode salut de: 1B, this: 0x9788028
    Merci d'avace...

  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Donner à Test une classe de base dont salut est un membre virtuel et faire de vector un vecteur de pointeurs sur cette classe de base.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 396
    Par défaut
    Merci, c'est parfait

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PrestaShop] Appeler une méthode depuis une template
    Par taka10 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 14/02/2015, 07h04
  2. Appeler une méthode template d'un paramètre template
    Par YéTeeh dans le forum Langage
    Réponses: 2
    Dernier message: 26/08/2006, 12h50
  3. appel entre méthodes de meme classe
    Par frmaniako dans le forum C++
    Réponses: 8
    Dernier message: 10/09/2004, 22h55
  4. [Débutant] [JSP] Appel de méthode
    Par Crazyblinkgirl dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 10/09/2004, 11h10
  5. [Débutant] Héritage & appel de méthodes
    Par KooX dans le forum Langage
    Réponses: 4
    Dernier message: 11/05/2004, 23h37

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