Historique des modifications - Message

Message #5134

Sujet: Pointeur de fonctions dans une classe


Type Date Auteur Contenu
Création du message 06-12-2008 13:02:35 tmyke
Tout d'abord, sois le bienvenu.
C'est vrai que c'est le forum d'Irrlicht, mais bon, c'est aussi la section C++, et si cela peut t'aider à avancer dans ton projet Irrlicht, alors il n'y a pas de problème...

Pour revenir donc à ta question, hmmm, je vois à peut près ce que tu veux dires (du moins je pense).

Faisont les choses doucemenent.
Donc, supposons que nous définissions une classe, nous allons écrire:
(les nom et classe employées sont uniquement là pour l'exemple, bien sûr)
class Nomclass
{
  ...
  int (*CollideFnt)   (CEntity* scene, int a); 
  ...

  // methodes
  inline void SetCollideCallBack( int (*fC) (CEntity* scene,int a))
  {    
     CollideFnt = fC;
  }
  inline void Routine()
  {     ...
	CollideFnt(entity, val);
        ...
  }

};

puis dans le code de notre appli, nous définissons par exemple un objet
Nomclass *test

en suite, c'est simple, dans notre programme, nous pourrons définir le pointeur de notre fonction.
On code une fonction quelconque, en respectant le type de définition établi dans Nomclass
int maFonction( CEntity* scene, int a )
{ 
 ...
}

En suite, il suffit d'affecter ta fonction à la valeur définit dans ta classe:
test->SetCollideCallBack( maFonction );

puis plus loin selon tes besoin, tu pourras écrire
 test->Routine()

Tu peux donc en final changer l'appel à ta fonction en passant par la fonction 'SetCollideCallBack', en choisissant
la fonction de ton choix.

C'est un concept pas du tout évidant à appréhender, mais qui est hyper puissant. Il est très employé dans la mise
sur pieds de ce que l'on appel les CallBack (d'ou le nom utilisé plus haut).

wink

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
232 invités en ligne
membre en ligne: -
RSS Feed