Bonjour tout le monde,
J'ai créé deux classes qui représentent un protocole pour envoyer des
données entre deux PC. Lors de l'appele de leur constructeurs elles
demandent un pointeur sur une fonction afin d'envoyer des messages
d'information sur la connection par protocole (un peu comme la fonction
WndProc qui reçoit des messages sur la fenêtre ouverte).
Dans ma classe de décodage du protocole, mon constructeur demande un
pointeur de type pFunc ou pFunc est déclaré de cette manière:
typedef bool (*pFunc)(int, SOCKET, const char*, int, int);
Il existe en plus des deux classe représentant le protocole, deux
autres classes qui s'occupe que de la connection par Socket entre les
deux ordinateurs.
Dans la classe serveur (qui contient celle de décodage du protocole) un
thread se lance pour l'écoute avec un socket (c'est donc une fonction
static). Je passe le pointeur de toute la classe au thread pour qu'il
puisse accèder à sa classe (chose qui est impossible normalement avec
une fonction static)
J'utilise donc le constructeur de la classe qui traite le protocole
dans un thread d'une autre classe. Voici la création de la calsse
depuis le thread: lLocal->lDecodeur = new
CTDecode(lLocal->MessageReceive, csock);
où
lLocal est le pointeur sur le tout de la classe (pour que la fonction static puisse accéder à sa classe, paramètre du thread)
lDecodeur est un pointeur sur la classe de décodage utilisée
et lLocal->MessageReceive est un pointeur sur la fonction qui permet de récupérer les messages de la classe protocole
(csock est un bête socket déjà connecté)
MessageReceive est une fonction qui reçoit les message (elle n'est pas static). Voici son prototype:
bool MessageReceive(int, SOCKET, const char*, int, int);
Mais lorsque je compile le compilo me met une erreur de ce type
error C2664: '__thiscall CTDecode::CTDecode(bool (__cdecl
*)(int,unsigned int,const char *,int,int),unsigned int)' : cannot
convert parameter 1 from
'bool (int,unsigned int,const char *,int,int)' to
'bool (__cdecl *)(int,unsigned int,const char *,int,int)'
Es-ce-que quelqu'un aurait une idée pourquoi le compilo me met ce bug?
(j'ai déjà essayé de mettre ce "
(__cdecl *)" dans le prototype de la fonction MessageReceive mais il y a toujours le même bug
...