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:
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 :mouarf: (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. :aie:
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 :lol:)
Merci par avance !