J'ai un peu réfléchi et je me suis posé une question :
Cette idée de lien entre 2 espaces est intéressante mais je trouve qu'elle pose certains problèmes avec ce que je fais.
Imaginons en effet cette classe :
C'est cool : on peut spécialiser chaque fonction pour chaque type de courbe, eventuellement via des politiques pour empecher l'appel à une fonction non spécialisée, mais cependant, imaginons une courbe polynominale de degré 1, 2 ou 3 : comment avec ce schéma stocker les paramètres de la courbe, à savoir les 2,3 ou 4 coeff de la courbe ? Ici cela me paraît impossible sans faire quelque chose d'assez laid au niveau du code.
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 template <typename T, typename U> class Curve { private : Interval<T> m_definitionInterval; Interval<U> m_functionInterval; public: // fonctions a specialiser pour chaque type de curve template <typename V> std::list<U> getSolution(T val); template <typename V> T getValue(U value); };
De plus, imaginons que je désire inclure un attribut de type pointeur sur curve, correspondant à la fonction appelée en premier dans une fonction composée : lors de l'instanciation d'une fonction curve, on pourrait choisir de la définir en fonction non pas de x mais d'une fonction de x(en fait j'explique très mal mais c'est juste le principe d'une fonction composée).
Concernant le type de la fonction composée de la Curve<T,U> déclarée,il ne s'agit pas forcément d'une curve de type Curve<T,U>. Au contraire, puisque c'est la "base" d'une fonction composée, elle est du type Curve<V,T>, puisque ses images correspondent aux "antécédents" de la courbe ayant cette fonction composée en attribut.
Je ne sais pas si vous m'avez suivi puisque je le répète j'explique très très mal enfin toujours est-il que si on considère cela on est obligé de rajouter des paramètres template infinis puisque chaque Curve peut être une fonction composée :
Curve<T,U> déclarée -> Curve<V,T> comme composée, qui est elle même une composée de Curve <W,V>, pouvant être également une composée -> Curve <X,W> et ainsi de suite
==>> impossible de définir la classe curve avec un nombre de paramètres template fini
Comment puis-je alors contourner tous ces problèmes, tout en respectant LSP (en espérant que vous m'ayez compris)
Merci par avance !





(en fait j'explique très mal mais c'est juste le principe d'une fonction composée).
Répondre avec citation





Partager