Salut,
Voilà, nous commençons à rentrer dans le vif du sujet...
En effet, le simple exemple de la gestion du positionnement a clairement mis en évidence le besoin d'adopter certains patrons de développements.
Le premier groupe de patrons dont le besoin a été mis en évidence se compose du visiteur, du médiateur et du composite.
En effet, il faut bien se rendre compte qu'il y aura régulièrement une relation de "contenant" à "contenu" qui entrera en ligne de compte, principalement entre les différents éléments visuels.
De ce fait, nous pouvons décemment estimer que le contenant agira tantôt comme un médiateur entre les différents éléments qu'il contient, tantôt comme simple visiteur de ceux-ci, et qu'enfin, le contenu peut parfaitement être... le contenant d'autre chose
Aucun de ces patrons de conception n'est en général réellement difficile à mettre en oeuvre, si ce n'est qu'ils s'appuient souvent sur... une hiérarchie d'héritage se rapprochant fortement du concept de "super objet" que je souhaites éviter à tout prix.
Nous pourrions faire appel aux tuple (qui sont redescendues de TR1 vers std) pair et autres "typelist" pour manipuler le "contenu" et implémenter par ailleurs "quelque chose" qui permette de visiter chaque élément, mais il faut avouer que l'écriture d'un code (qui serait pourtant correct ) proche de
serait sans doute de nature à enchanter les puristes, mais aussi (et surtout ) à... faire fuir les débutants...
Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class MyClass : Visitor< Class1, Class2, Class3, Class4, Class5 > { public: MyClass():Visitor( Class1( this ), Class2( this ), Class3( this ), Class4( this ), Class5( this ) ) { } void doSomething() { /*...*/ } };
Et je crains que la solution qui consisterait à conseiller la définition d'un alias de type (ou à les définir nous même) ne soit pas vraiment plus intéressante, et ce d'autant moins qu'il y a de fortes chances pour que Class1...ClassN doivent suivre le même chemin
Quelle serait donc, selon vous, la manière la plus intéressante pour arriver à "factoriser" ces aspects et donc permettre "à qui veut" de s'amuser avec les templates, tout en ménageant la facilité d'utilisation que nous souhaitons garder pour Farfelue
A ce sujet, nous devrions essayer de partir du principe que c'est au développeur de se "casser la tête" pour faciliter la vie de l'utilisateur
Partager