Bonjour,
Je poste ce message pour tenter de résoudre un problème qui est apparu lorsque j'ai tenté d'adapter un programme OpenGL en fonction des extensions présentes sur une machine (mon problème ne relève pas de l'API OpenGL mais du C++ même). J'ai une classe qui permet la création et l'utilisation d'un contexte OpenGL, dans cette classe une méthode doit permettre l'affichage de données à l'écran. Le problème étant que je voulais choisir quelle méthode serait exécutée en fonction de la présence ou non d'une extension OpenGL. J'ai fait quelque chose dans ce goût là :
Le problème est qu'ici la donnée membre fonction est private pour éviter qu'on puisse la changer de n'importe qu'elle manière. Il est donc impossible de faire appel à la fonction pointée par la donnée membre fonction en dehors de la classe Toto. Il est bien sur possible de créer une méthode publique qui réalise l'appel à cette fonction, mais n'y a-t-il pas une manière plus élégante de faire les choses ?
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
30
31
32
33
34
35
36
37 class Toto { public: Toto(); ~Toto(); private: void (*fonction)(); }; static void tata() { //Faire tata } static void titi() { //Faire titi } Toto::Toto :fonction(0) { if(maCondition) fonction = &tata; else fonction = &titi: } int main() { Toto toto; toto.fonction(); return 0; }
Partager