Bonjour tout le monde,
Voici mon problème : j'ai une classe A qui définie une méthode MA faisant appel a une méthode virtuelle pure MVP et la classe B qui hérite de A et qui donc implémente la MVP : précision les classe A et B sont des classes Template.
Jusque la pas de problème, ça marche.
Maintenant, j'ai besoin de changer le comportement de MVP : j'ai ajouté donc plusieurs MVP définies dans A et implémentées dans B. En fonction d'un paramètre de MA je choisi de faire telle ou telle MVP : j'ai donc un gros switch en plein milieu de la fonction MA pour choisir la bonne MVP : la solution les foncteurs bien sur !
Sauf que je n'y arrive pas du tout : mon gros problème c'est que je n'arrive pas a déclarer un foncteur vers une MVP template de la classe A, faut il le faire "a l’intérieur" de la classe, ou l’extérieur ?
Voila ou j'en suis en plus simplifié :
J’espère que j'ai était assez clair,
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
38
39
40 template <typename T> class A { public: typedef T (A::*InterpolationFunc)(float, float, float); // declaration qui ne marche pas void MA(InterpoaltionType type) { InterpolationFunc interpFunc = selectInterpoaltion(type); // choix de la bonne fonction d'interpolation // appel de interpFunc dans une boucle } InterpolationFunc selectInterpoaltion(type) { switch(type) { case 1 : return &A::interpolation1; case 2 : return &A::interpolation2; ... case N : return &A::interpolationN; } } virtual void T interpolation1(float, float, float) = 0; virtual void T interpolation2(float, float, float) = 0; ... virtual void T interpolationN(float, float, float) = 0; }; template <typename T> class B : public A<T> { void T interpolation1(float, float, float) { ... } void T interpolation2(float, float, float) { ... } ... void T interpolationN(float, float, float) { ... } };
Merci d'avance pour le coup de main !
Partager