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 :
- void setMouseCallback(const string& winname, MouseCallback onMouse, void* userdata=0 )
|
Code :
- 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 :
- bool Points::dessinerPoints(Photo& photo)
- {
- setMouseCallback( "Display Window", onMouse, &photo );
- return true;
- }
- void Points::onMouse(int event, int x, int y, int flags, void* image)
- {
- Photo& photo = reinterpret_cast<Photo&>(image);
- ...
|
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
Message édité par Profil supprimé le 09-04-2013 à 22:30:00