C++ : passage argument fonction membre

Fermé
beat4less - 10 oct. 2008 à 12:05
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 10 oct. 2008 à 13:18
Bonjour,
Imaginons que j'ai la classe suivante :
class myclass {
bool isType1();
bool isType2();
bool isType3();
}

Plus loin j'aimerais pouvoir définir une fonction prenant en argument une de ces fonctions membres, par exemple :

void myfunc(std::vector<myclass> vec, (myclass::*f)() ) {
................
if( vec[i].f() )
..........
}

quis era appelé comme ceci par exemple : myfunc(myvec, myclass::isType1() );

les parties en gras sont fausses, c'est pour donner l'idée de ce que je veux faire
Comment puis-je faire ça svp ?

1 réponse

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
10 oct. 2008 à 13:18
pour une fonction, il faut que tu donne le type de retour et les arguments. Si je me souviens bien :
void myfunc(std::vector<myclass> vec, (bool)(*f)(void) ) {
et l'appel :
myfunc(myvec, &Myclass::isType1 );
où Myclass est un objet de type myclass. Car il me semble qu'il n'est pas possible d'appeler une fonction membre en dehors d'un objet (logique si elle modifie des membres de la classe).
Ou alors il faut que la fonction soit statique.
-1