[C++] Créer une fonction template avec argument
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:
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:
for_each(tabVector.begin(), tabVector.end(), Afficher(zoneJeu));
Message d'eereur :
Citation:
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:
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