Rechercher : dans
Par :

C++ : passage argument fonction membre

Dernière réponse le 10 oct 2008 à 13:18:30 beat4less, le 10 oct 2008 à 12:05:12 
 Signaler ce message aux modérateurs

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 ?

Meilleures réponses pour « C++ : passage argument fonction membre » dans :
Langage C - Les fonctions Voir La notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
Les fonctions en C++ : surcharge et paramètres par défaut. VoirLes fonctions en C++ : surcharge et paramètres par défaut. 1. La surcharge de fonctions et méthodes de classes, dont le constructeur 2. Utilisation des paramètres par défaut En C++, une même fonction ou méthode de classe peut être...
Langage C++ - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
Les objets en langage C++ VoirLa création d'objets En C++, il existe deux façons de créer des objets, c'est-à-dire d'instancier une classe : de façon statique de façon dynamique La création statique La création statique d'objets consiste à créer un objet en lui affectant un...

1

 Char Snipeur, le 10 oct 2008 à 13:18:30

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. Salutation !  avant je croyais, maintenant je suis fixé.Jésus Christ
Char Snipeur

Répondre à Char Snipeur