Bonjour,
Le net est tellement fourni en documentation et exemples sur le sujet que je n'arrive pas à trouver solution à mon problème. Ou alors il faudrait que je passe une semaine à me former sur le sujet des pointeurs de fonction, des fonctions lambda, peut-être des templates, ce qui me serait surement très bénéfique, mais je manque de temps.
J'aimerai pouvoir dire à un objet d'une classe A d'appeler une méthode d'une autre classe quelconque.
J'ai trouvé beaucoup d'exemples pour implémenter la chose pour une classe unique (seulement B, ou seulement C, mais pas les 2 à la fois). Je pourrais aussi utiliser un template pour la classe A qui permettrait d'utiliser B ou C pour des instances différentes, comme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 class A { void setFunctionToCall( /* paramètres */ ){ // La fonction passée en paramètre est une méthode non statique d'une classe quelconque }; void f(){ // Appeler la fonction définie par setFunctionToCall }; }; class B { void g(){ cout << "hourra !" << endl; } }; class C { string message; C() : message("youpi !") {} void h(){ cout << message << endl; } }; A a; B b; a.setFunctionToCall( b, B::g ); // ou quelque chose du genre. C c; a.setFunctionToCall( c, C::h ); // ou quelque chose du genre.
Mais je souhaite qu'une même instance de A puisse appeler au choix une méthode de n'importe quelle classe, et en changer en cours d'exécution, comme dans le code d'exemple donné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 A<B> a1; A<C> a2;
Je n'arrive même pas à savoir si c'est possible en C++ !
Merci beaucoup.
P.S : J'ai besoin de ceci pour une application construite avec openFrameworks qui intègre la librairie POCO. Peut-être POCO permet-elle de faire ceci. Je préfèrerais apprendre à le faire sans POCO, en utilisant les nouveautés de C++11 si besoin.
Partager