Bonjour,
Je suis en train de faire un petit projet avec la librairie Wii Yourself qui permet de connecter une Wiimote à son programme.

Dans le fichier Demo.cpp, il y a trois fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
void on_state_change (wiimote &remote, state_change_flags  changed, const wiimote_state &new_state){//code.....}
 
 
void PrintTitle (HANDLE console){//code.....}
 
int _tmain (){//code.....}
Bref, heureusement ça marche parfaitement.

Comme j'ai voulu l'intégrer dans autre projet, j'ai voulu regrouper les éléments de Demo.cpp dans une classe.
Ainsi, voilà ce que j'ai rajouté dans Demo.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "libs\wiimote.h"
class WiimoteHandler {
private:
	HANDLE console;
	wiimote_sample sine_sample, daisy_sample;
	wiimote remote;
 
	void printTitle(HANDLE console);
 
	void on_state_change(wiimote			  &remote,
		state_change_flags  changed,
		const wiimote_state &new_state);
 
public:
 
	int demo_wiimote();
 
};
Remarquez la fonction _intmain() qui est devenu demo_wiimote().

Maintenant, les trois fonctions citées précédemment, sont désormais membre de la classe WiimoteHandler.

J'ai étais donc contraint de changer cette ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
remote.ChangedCallback		= on_state_change;
en quelque chose qui ressembla à ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
remote.ChangedCallback =  WiimoteHandler::on_state_change;
ou ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
remote.ChangedCallback =  this->on_state_change;
Malheureusement, ça ne marche pas alors que ça devrait le faire...

Voilà l'erreur que j'ai :
Erreur C3867 'WiimoteHandler::on_state_change'*: syntaxe non-standard*; utilisez '&' pour créer un pointeur vers un membre myproj e:\3d lab\opengl-bullet\myproj\demo.cpp 152

Erreur C2440 '='*: impossible de convertir de 'void (__cdecl WiimoteHandler::* )(wiimote &,state_change_flags,const wiimote_state &)' en 'state_changed_callback' myproj e:\3d lab\opengl-bullet\myproj\demo.cpp 152
Sauf qu'avec la première manière de faire, Visual me met du rouge sur le signe égal...


Je suis perdu...

Petits indices, qui pourront vous aider à m'aider () :
-la variable remote est de type wiimote qui est une classe définie dans wiimote.h,
-ChangedCallback est un champ de la classe wiimote de type state_changed_callback,
-state_changed_callback est définie comme cela au début du fichier wiimote.h : typedef void (*state_changed_callback) (class wiimote &owner, state_change_flags changed, const wiimote_state &new_state); soit un pointeur de fonction renvoyant void qui a les mêmes paramètres que WiimoteHandler::on_state_change.

Remarque, lorsque la fonction on_state_change ne fait pas parti de WiimoteHandler, ça marche. Mais je veux qu'elle fasse parti de la classe justement...
J'aimerais tellement comprendre la source de mon problème....
Merci pour votre aide.