Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
938 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Récupération d'un paramètre de type void*

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récupération d'un paramètre de type void*

n°2185058
Profil sup​primé
Posté le 09-04-2013 à 22:22:39  answer
 

Bonjour à tous,

 

Je poste ici dans l'espoir de trouver un peu d'aide. J'essaie en vain de faire fonctionner le bout de code qui suit, je vous explique la situation. Je développe un programme assez simple sous OpenCV dans lequel j'utilise les fonctions:

Code :
  1. void setMouseCallback(const string& winname, MouseCallback onMouse, void* userdata=0 )


Code :
  1. static void onMouse(int event, int x, int y, int flags, void*)
 

Pour lire les évenements sur la souris.

 

OnMouse est une fonction que je définis moi-même mais dans la mesure où elle doit être de type MouseCallback sa signature est imposée pour le bon fonctionnement de setMouseCallback (du moins c'est comme ça que j'ai compris les choses mais à priori c'est le cas). Oui, en fait le truc c'est que jusqu'à présent je n'ai jamais réellement travaillé en mode graphique avec les event handler et ce genre de choses alors il y a beaucoup de réflexes et de raisonnements que je dois acquérir.

 

Mon problème est que je souhaite passer des données à ma fonction onMouse, il s'agit d'une variable dont le type est la classe Photo que j'ai crée moi-même, voici mon code:

Code :
  1. bool Points::dessinerPoints(Photo& photo)
  2. {
  3.  setMouseCallback( "Display Window", onMouse, &photo );
  4.  return true;
  5. }
  6. void Points::onMouse(int event, int x, int y, int flags, void* image)
  7. {
  8.  Photo& photo = reinterpret_cast<Photo&>(image);
  9. ...


Tout compile normalement. Lors de l'appel de setMouseCallback ma référence &photo pointe vers le bon objet mais le problème est que dans la fonction onMouse elle-même la référence &photo pointe vers n'importe quoi... C'est comme si elle ne reçoit pas le bon paramètre lorsqu'elle est appelée, mais ça n'aurait aucun sens. Bien entendu,cela fait planter le reste de mon côte. Je commence vraiment à sécher, j'ai cherché tout l'après midi !!

 

Toute aide serait la bienvenue

 

:jap:


Message édité par Profil supprimé le 09-04-2013 à 22:30:00
mood
Publicité
Posté le 09-04-2013 à 22:22:39  profilanswer
 

n°2185091
I_m_back
Posté le 10-04-2013 à 08:35:28  profilanswer
 

Photo* photo = reinterpret_cast<Photo*>(image);


---------------
Ta peau de nacre noir, la courbe de ton cul
n°2185100
Profil sup​primé
Posté le 10-04-2013 à 10:25:04  answer
 

:jap:
 
Effectivement tout fonctionne avec un pointeur, cependant je ne comprend pas pourquoi je ne peux pas le faire avec des références :/

n°2185137
I_m_back
Posté le 10-04-2013 à 12:24:23  profilanswer
 

Tu peux faire ça :
 
Photo& photo = *(reinterpret_cast<Photo*>(image));
 
 
 


---------------
Ta peau de nacre noir, la courbe de ton cul
n°2185147
Terminapor
I'll see you rise.
Posté le 10-04-2013 à 13:20:49  profilanswer
 


Parce que tu castes un pointeur en référence, faut caster en pointeur.


---------------
Perhaps you don't deserve to breathe
n°2185182
Profil sup​primé
Posté le 10-04-2013 à 15:41:21  answer
 

Merci beaucoup pour votre aide!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Récupération d'un paramètre de type void*

 

Sujets relatifs
recupération conf switch sur FTPModifier de type d'un attribut dans la classe héritée
Passage paramètre Cookie Javascript[PHP]paramètre pas fonctionnel dans une fonction
[VBA] fonction paramétré renvoyant le résultat d'une requête ACCESSRécuperation du numero de telephone Entrant
[VBS]Récupération de variables dans un fichier INIVariable de type texte Access
[Java/ANT] Chercher des classes d'un type précisrécupération d'une variable a l'écriture d'un input
Plus de sujets relatifs à : Récupération d'un paramètre de type void*


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR