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 :
Bref, heureusement ça marche parfaitement.
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.....}
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 :
Remarquez la fonction _intmain() qui est devenu demo_wiimote().
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(); };
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 :
en quelque chose qui ressembla à ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part remote.ChangedCallback = on_state_change;
ou ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part remote.ChangedCallback = WiimoteHandler::on_state_change;Malheureusement, ça ne marche pas alors que ça devrait le faire...
Code : Sélectionner tout - Visualiser dans une fenêtre à part remote.ChangedCallback = this->on_state_change;
Voilà l'erreur que j'ai :
Sauf qu'avec la première manière de faire, Visual me met du rouge sur le signe égal...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
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.
Partager