Utilisation d'une fonction d'une fonction membre d'une classe [Résolu]

Signaler
Messages postés
5
Date d'inscription
mercredi 15 février 2006
Statut
Membre
Dernière intervention
29 avril 2006
-
Messages postés
5
Date d'inscription
mercredi 15 février 2006
Statut
Membre
Dernière intervention
29 avril 2006
-
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

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
c'est simple. Tu peux pas.

Seul les fonctions non membres ou les fonctions statiques peuvent utilisées pour ce que tu veux.
Messages postés
5
Date d'inscription
mercredi 15 février 2006
Statut
Membre
Dernière intervention
29 avril 2006

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 ?
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Il y a surement moyen, mais ca dépend ce que tu veux faire exactement. Explique le pb précisément :)
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
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.
Messages postés
5
Date d'inscription
mercredi 15 février 2006
Statut
Membre
Dernière intervention
29 avril 2006

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.
Messages postés
5
Date d'inscription
mercredi 15 février 2006
Statut
Membre
Dernière intervention
29 avril 2006

Je vais essayer de feinter.
En tout cas, merci pour ton aide Luthor.
A+

Guillaume