Bonjour à tout le monde
en regardant des discutions récentes et en regardant un tuto sur un autre site j'ai un peu près compris les pointeurs sur fonctions mais moi je souhaite faire des pointeurs sur méthodes. Le tuto est très bien mais j'ai du mal à le mettre moi même en place sur un exemple simple.
je vous ai mis un exemple ci dessous pourriez vous s'il vous plait regarder mon code et me dire mon erreur ?
merci beaucoup
mon bout de code ?
main.cpp
ClassPerso.hCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include <iostream> #include "mathematic.h" #include "ClassPerso.h" using namespace std; int main() { ClassPerso objetPerso; Mathematic mathematic; double (ClassPerso::*functionPointer)(double) = &ClassPerso::maPetiteFonction; double min=-2, max=5; double resultat=mathematic.Algo(min,max,functionPointer); cout << "resultat " << resultat << endl; return 0; }
mathematic.hCode:
1
2
3
4
5
6
7
8
9
10
11
12
13 #ifndef CLASSPERSO_H #define CLASSPERSO_H #include "mathematic.h" class ClassPerso { public: ClassPerso(); ~ClassPerso(); double (*functionPointer)(double); double maPetiteFonction(double); private: }; #endif // CLASSPERSO_H
ClassPerso.cppCode:
1
2
3
4
5
6
7
8
9
10
11
12 #ifndef MATHEMATIC_H #define MATHEMATIC_H #include "ClassPerso.h" class Mathematic { public: Mathematic(); ~Mathematic(); double Algo(double &,double &,double (ClassPerso::*functionPointer)(double)); private: }; #endif // MATHEMATIC_H
mathematic.cppCode:
1
2
3
4
5
6
7
8
9
10
11 #include <iostream> #include <math.h> #include "ClassPerso.h" #include "mathematic.h" using namespace std; ClassPerso::ClassPerso(){} ClassPerso::~ClassPerso() {} double ClassPerso::maPetiteFonction(double x) { return x-cos(x)+sin(x); }
Code:
1
2
3
4
5
6
7
8
9
10
11
12 #include <iostream> #include <math.h> #include "ClassPerso.h" #include "mathematic.h" using namespace std; Mathematic::Mathematic() {} Mathematic::~Mathematic() {} double Mathematic::Algo(double &min,double &max,double (*ClassPerso::*f)(double)) { double b=f(min)+f(max); return b; }