Utilisation d'une fonction d'une fonction membre d'une classe

Résolu
guydegnol Messages postés 5 Date d'inscription mercredi 15 février 2006 Statut Membre Dernière intervention 29 avril 2006 - 29 avril 2006 à 11:58
guydegnol Messages postés 5 Date d'inscription mercredi 15 février 2006 Statut Membre Dernière intervention 29 avril 2006 - 29 avril 2006 à 13:27
Bonjour,

J'aimerais utiliser une fonction ayant comme argument une fonction membre d'une classe.
Vous pouvez trouver un exemple tres simple de ce que je veux faire a la fin du message.
J'arrive a faire fonctionner mon code si je passe comme argument de fonction, une fonction non-membre de ma classe.
Je pense que je dois rater quelque chose et je serais tres heureux si quelqu'un pouvait m'aider.

Merci

#include
 
class SimpleClass {
  float x0_;
  public :
   SimpleClass();
   virtual ~SimpleClass(){};
   float f(float x){return x+x0_;};
   float F(float (*func)(float), float a, float b);
};

float g(float x){return x+1;};

SimpleClass::SimpleClass() : x0_(1) {
  float (*func) (float);
  //func = f;// ne compile pas
  func = g; // compile et fonctionne correctement
  std::cout<<F(func,2,4)<<"\n";
}

float SimpleClass::F(float (*func)(float), float a, float b){
  return (*func)(a)+(*func)(b);
}

int main (){
 SimpleClass ab;
 return 0;
}

6 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
29 avril 2006 à 12:49
c'est simple. Tu peux pas.

Seul les fonctions non membres ou les fonctions statiques peuvent utilisées pour ce que tu veux.
3
guydegnol Messages postés 5 Date d'inscription mercredi 15 février 2006 Statut Membre Dernière intervention 29 avril 2006
29 avril 2006 à 13:03
Merci Luthor de ta reponse extrement claire.
Aurais-tu une suggestion pour une solution pour passer en argument une fonction qui depend de beaucoup de membres d'une classe ?
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
29 avril 2006 à 13:07
Il y a surement moyen, mais ca dépend ce que tu veux faire exactement. Explique le pb précisément :)
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
29 avril 2006 à 13:16
Pour feinter, mais je sais pas si ca va t'aller:


static float SimpleClass::ta_fonction( (const ou pas ? ) SimpleClass & _obj, float _x);


Définie ainsi, en passant l'objet en argument. Ca marchera bien.

Du coup, il faut aussi changer la définition de F.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
guydegnol Messages postés 5 Date d'inscription mercredi 15 février 2006 Statut Membre Dernière intervention 29 avril 2006
29 avril 2006 à 13:16
OK,



je suis en train de construire une fonction mathematique basee sur une cinquantaine de parametres que j'ai implemente dans une classe.
Ensuite, je veux prendre cette fonction et l'integrer numeriquement.
Pour ca, je souhaitais utiliser une methode numerique standard (celle de Gauss-Legendre)
 pour integrer cette fonction.
Cette fonction de Gauss prend comme argument la fonction que je veux integrer.

Voila, merci de ton aide.
0
guydegnol Messages postés 5 Date d'inscription mercredi 15 février 2006 Statut Membre Dernière intervention 29 avril 2006
29 avril 2006 à 13:27
Je vais essayer de feinter.
En tout cas, merci pour ton aide Luthor.
A+

Guillaume
0
Rejoignez-nous