Problème avec un appel de fonction - C++ - Programmation
Marsh Posté le 31-03-2003 à 22:04:36
Je vois plusieurs choses qui me dérangent :
Marsh Posté le 31-03-2003 à 22:13:56
j'ai édité mon post, j'avais fait une erreur.
En fait pour le coup du cassebrique::reshape, cela n'est normalement pas nécessaire car je travaille dans la classe (dans le constructeur plus précisément).
Pour le static, je ne comprends pas vraiment le souci.
Et le pointeur, ben en fait la fonction glutReshapeFunc prend une fonction e nparamètre, et pas un pointeur donc ...
Bizarre.
Marsh Posté le 31-03-2003 à 22:27:09
manu025 a écrit : Pour le static, je ne comprends pas vraiment le souci. |
Bon je connais pas tous les détails, mais en gros si elle n'est pas static, ta fonction existe pour chaque classe que tu crée. Or une fonction callback ne doit exister qu'une seule fois (sinon OpenGL ne sait pas quelle version appeler). C'est pour ça qu'il faut la déclarer static, elle sera donc commune à toutes les instances de ta classe.
C'est pour cette raison qu'il faut aussi la passer en temps que cassebrique::reshape.
Pour information, dans ta fonction, tu ne pourras accéder à this (comme elle est commune à toutes tes instances de cassebrique). En fait, utiliser une fonction membre comme fonction callback n'a que très peu d'intérêt en dehors de la clarté.
manu025 a écrit : Et le pointeur, ben en fait la fonction glutReshapeFunc prend une fonction e nparamètre, et pas un pointeur donc ... |
Comme je le disais, j'ai dû me planter, je ne sais jamais comment passer une fonction en paramètre (juste le nom ou '&' + le nom).
Marsh Posté le 31-03-2003 à 22:55:46
Je comprends a peu près le problème que tu évoques mais l'ajout de static induit d'autres erreurs :
Code :
|
Je me souviens avoir eu une erreur de ce type dans un projet utilisant le toolkit QT mais je ne me souviens plus de la raison...
Marsh Posté le 31-03-2003 à 23:05:54
Je suis pas un expert en g++ mais je suppose que c'est au moment du link que tu as ces erreurs. Il faut indiquer lors de la compilation que tu veux linker avec la library OpenGL.
tu peux regarder cette page par exemple.
Marsh Posté le 31-03-2003 à 21:54:40
J'ai un petit souci dans un prog en open GL et C++.
Je vais essayer de faire simple :
La fonction jeu uilise à un moment donné la fonction GLUT suivante :
et le compilo me retourne ça :
Si la fonction reshape n'appartient pas a la classe cassebrique, cela marche sans souci, voyez vous le problème ?
Merci d'avance.
Message édité par manu025 le 31-03-2003 à 22:08:38