Bonsoir,

J'ai défini des classes qui possèdent toute une méthode afficher(param p).

Etant donné que j'utilise des std::vector, j'ai eu l'idée de créer une fonction template pour appeller la fonction afficher(param p) quelque soit la classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
struct Afficher
{
    /*Afficher(const BITMAP*& zoneJeu) zoneJeu(zoneJeu) {}*/
   template <class T> void operator ()(T*& p, BITMAP* zoneJeu) const
   {
      p->afficher(zoneJeu);
   }
/*
   private:
    BITMAP* zoneJeu;*/
};
Et l'appel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
for_each(tabVector.begin(), tabVector.end(), Afficher(zoneJeu));
Message d'eereur :
no matching function for call to `Afficher::Afficher(BITMAP*&)'|
Ca ne fonctionne pas, j'ai testé des variantes en commentaire.

Le but est de remplacer des fonctions du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
for (unsigned int i=0; i<tab1.size(); i++)
    {
        tab1[i]->afficher(zoneJeu);
    }
for (unsigned int i=0; i<tab2.size(); i++)
    {
        tab2[i]->afficher(zoneJeu);
    }
Voilà merci et bonne soirée