Bonsoir !
Je dispose d'une classe de cam�ra qui peut mettre � jour la position de la camera de trois mani�res diff�rentes, selon le type de cam�ra choisie. J'ai pens� au d�but � faire trois if :
Toutefois ces fonctions �tant assez longues, cela m'aurait fait une fonction UpdatePosition() tr�s tr�s longue. J'ai donc pens� � faire un pointeur de fonction qui appelerait automatiquement la bonne fonction.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 if (typeCamera1) { // } else if (typeCamera2) { // } else { // }
Voici donc la signature de cette fonction :
(variable membre priv�e)
Code : S�lectionner tout - Visualiser dans une fen�tre � part boost::function<void ()> updatePositionFunction;
Dans le constructeur de la classe, j'attribue la fonction par d�faut :
Tout ce code compile correctement, le probl�me arrive avec la fonction UpdatePosition, qui doit appeler donc la bonne fonction :
Code : S�lectionner tout - Visualiser dans une fen�tre � part updatePositionFunction = boost::bind(&Camera::UpdatePositionFPS, this);
D'autre part, est-il possible de traduire ce code sans utiliser boost (qu'avec la STL), tout en gardant une syntaxe pas trop d�gueue ?
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 void UpdatePosition () { updatePositionFunction; // Compile, mais n'appelle pas la fonction UpdatePositionFPS updatePositionFunction(); // Compile, mais crash dès le début de l'application }
Partager