c++: classe et callback d'une classe

c++: classe et callback d'une classe - Programmation

Marsh Posté le 12-03-2001 à 15:27:46    

hello,
 
une petite question de c++:
 
j'écris une classe avec ses méthodes. ok.
Maintenant, je voudrais qu'une instance de cette classe puisse disposer d'une callback.
La convention d'une callback étant imposée ( type_de_retour (__stdcall *) (int toto1, etc...) )
 
Le compilo refuse de faire une callback avec une fonction membre.
Du coup, je declare une fonction non membre d'1 classe, avec la convention d'appel qui va bien,
comme amie de cette classe, et c'est ok.
SAUF que du coup, sans même que je déclare cette fonction 'static', toutes les instances de cette
classe disposeront d'une seule et même call back. J'ai essayé: si j'instancie plusieurs objets de
la classe et que je leur demande l'adresse de la callback, toutes les adresses sont en fait les même.
 
Alors il y a toujours le moyen de passer un pointeur sur l'objet dans la callback pour savoir à quel
objet doit s'appliquer la callback, mais je ne trouve pas cela tres élégant.
 
Qq1 a-t-il une autre solution ou une autre idée?

Reply

Marsh Posté le 12-03-2001 à 15:27:46   

Reply

Marsh Posté le 12-03-2001 à 16:11:03    

Qu'est ce qui gêne ?

Reply

Marsh Posté le 12-03-2001 à 16:21:36    

Qu'es-ce qui te gène ?
 
Regarde la tronche du this dans ton callback, c'est bien à chaque fois le bon objet (enfin, je crois :D ).


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 12-03-2001 à 16:26:08    

ce qui me gêne, c'est que:
.ca fait des données en plus à gérer
.il faut une protection multithread. si 2 threads veulent s'adresser à deux objets différents, c'est en fait la même fonction qu'il vont appeler, et ca peut causer des soucis (sur des bi-pro en tous cas c sur c genere des ennuis ).
 
Donc ca alourdi un peu.
C'est plus une simplification qu'une solution, que je cherche. Et au passage, c'est le même pb avec les threads: il y a incompatibilité pour une fonction entre être une fonction membre et pouvoir être executée dans un thread. La encore, je suis obligé de "sortir" la fonction dela classe et de la déclarer amie.
Les amies, c'est bien, mais bon... faut pas abuser...

Reply

Marsh Posté le 12-03-2001 à 16:41:32    

Si ils appellent la même sous fonction mais que celle-ci modifie des données différentes (les objets par exemples) il n'y a aucun pb.

Reply

Marsh Posté le 12-03-2001 à 16:48:41    

oki, bon ben je continue comme ça.
je confirme que pour le moment ca tourne... c juste que g pas envie de m'appercevoir dans 2 semaines que ya 1 cas ou cela ne fonbctionne pas et devoir tout reprendre...
 
merci du point de vue éclairé :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed