Pointeur vers une méthode ? - C++ - Programmation
Marsh Posté le 16-10-2003 à 19:28:22
fonction membre s'il te plait
ben &Foo:fonction, tu veux pas filer un morceau de code µ?
Marsh Posté le 16-10-2003 à 19:45:19
mmh ... voici un bout de code de ce que j'essayais de faire. Le but est d'avoir un pointeur sur un code appelant CallBack dans Foo. (ou directement un pointeur vers CallBack)
(pas taper si c pas beau)
Code :
|
mais le compilo me dit :
cannot convert from 'overloaded-function' to 'fCallBack' (sur 'fCallBack fptr = cb->CallBack();')
je suppose que mon idée n'est pas bonne, il y a une solution ?
Marsh Posté le 16-10-2003 à 19:48:22
rien capté à ton code
voilà un début d'exemple
Code :
|
Marsh Posté le 16-10-2003 à 19:48:38
Ben tu as déclaré ta fonction void CallBack(); et ici tu demandes à récupérer un fCallBack (fptr = cb->CallBack())
C'est normal ?
Marsh Posté le 16-10-2003 à 19:50:19
En c++, je préfère laisser tmober les focntions de call back si possible.
Au lieu de passer une fonction de call back, utilise un objet de call back sur lequel une méthode particulière sera appelée au déclenchement d'un évenement.
Marsh Posté le 16-10-2003 à 19:52:33
un objet-fonction quoi
faisez un tour chez stl et boost comme d'hab
Marsh Posté le 16-10-2003 à 20:39:47
Code :
|
qu'est ce que c'est ?
Marsh Posté le 16-10-2003 à 20:45:38
mais a quoi sert l' * ?
j'ai lu ton exemple, et en fait ce que je voudrais, c'est un pointeur vers une méthode d'un objet, pas un pointeur vers une méthode de la classe (je m'exprime p-e pas avec les bons termes )
je vais aller voir vers la stl et boost
Marsh Posté le 16-10-2003 à 20:48:42
je crois que tu ne comprends pas grand chose. un objet n'a pas de fonction propre, il obeit à l'interface de sa classe. ce n'est pas possible de faire pointer une fonction comme tu le souhaites.
l'* ? ben à deferencer, comme pour les pointeurs ...
Marsh Posté le 16-10-2003 à 20:56:44
oui, ca il me semblait avoir compris, ce que je cherche c'est donc a contourner le problème.
Marsh Posté le 16-10-2003 à 23:09:33
Code :
|
ici il faut passer par boost, parce qu'on a une déficience de STL qui n'avait pas prévu tous les cas, une longue histoire
Marsh Posté le 17-10-2003 à 10:50:20
oui, j'ai commencé a étudier boost.fonction, j'essaie de comprendre comment ca marche. Merci
Marsh Posté le 17-10-2003 à 13:01:37
pas besoin de boost::function. il te faut juste un mem_fun_ref (ou mem_fun) et tu bind le premier argument à un objet. sinon tu peux le programmer à la main sans problème
Marsh Posté le 16-10-2003 à 19:25:04
Bonjour,
je voudrais pouvoir obtenir un pointeur vers le membre d'une classe.
j'ai essayé avec une classe contenant une méthode virtuelle pure, et une autre classe définissant cette méthode, mais je n'y suis pas arrivé
qq1 saurait-il comment faire ?
(je ne peux pas déclarer cette méthode statique et lui passer this en paramètre)
---------------
-( BlackGoddess )-