Bonjour
.
Voil� je cherche � utiliser un callback en C++ mais j'ai beaucoup de mal.
J'ai une classe qui initialise la biblioth�que GLFW (pour l'affichage OpenGL), et je veux lui attribuer un callback :
1 2 3 4 5 6 7
| class MaClasse
{
MaClasse ();
~MaClasse ();
void AssignerCallback ();
} |
Et la fonction AssignerCallback :
glfwSetWindowSizeCallback (WindowSizeCallback);
Et le probl�me c'est justement cette fonction WindowSizeCallback. J'ai essay� de d�clarer private statique la fonction WindowSizeCallback comme ceci :
static void GLFWCALL WindowSizeCallback (int width, int height);
Pas d'erreur � la compilation, mais la fonction n'est jamais appel�e, donc j'en conclu que ce n'est pas comme �a. J'ai tent� de faire un extern "C" � l'int�rieur de la classe mais �a ne fonctionne pas non plus. Je ne veux pas faire de l'h�ritage (je crois que c'est possible en d�rivant des classes,...), et je crois que c'est possible avec boost mais j'ai un peu de mal.
J'ai essay�, en utilisant boost::function en cr�ant une fonction :
1 2
|
boost::function <void (int width, int height)> WindowCallback; |
puis une fonction statique :
static void GLFWCALL MaFonction (int width, int height) {};
Et ensuite �crire dans la fonction AssignerCallback :
1 2
| WindowCallback = &MaFonction;
glfwSetWindowSizeCallback (WindowCallback); |
Mais �videmment �a ne compile pas :/ : Erreur 1 error C2664: 'glfwSetWindowSizeCallback' : impossible de convertir le param�tre 1 de 'boost::function<Signature>' en 'GLFWwindowsizefun' d:\utilitaires\developpement\visual c++\projets\gamekult project\src\gkp_output.cpp 32
Bref, je demande donc votre aide. J'en suis s�r qu'il y a une m�thode �l�gante de faire �a avec boost::function (boost::bind ?), mais j'avoue avoir un peu de mal :d.
Partager