Mais je ne comprends pas pourquoi vous fuyez les templates.
La meilleure utilisation des templates, c'est quand elles sont bien combinées à la POO. Les bons programmeurs C++ savent utiliser l'héritage quand il faut (moins souvent qu'on le pense), et y mettre des templates quand il faut. Quand j'ai crée ce sujet, j'ignorais encore pas mal de choses.
J'ai fait des progrès conséquents, et ai lu de très bon bouquins sur le sujet.
Imaginons une factory. Il y a plusieurs moyens de faire une factory d'objets.
La façon delphi, c'est de renvoyer un TObject et donc d'utiliser le polymorphisme d'exécution, non ? Ca entraine de devoir chaque fois qu'on veut se servir d'une classe fille caster (même si c'est géré en interne) en classe fille, TMouton disons, donc surement par le moyen de quelque chose semblable à une vtable, non ?
Je vous renvoie vers Loki (http://loki-lib.sf.net) pour cela.
De plus, grâce aux templates, on peut modifier le comportement de création : new, copie d'un prototype, malloc, etc ... On peut ainsi créer avec le même code une factory qui crée ses objets avec new, une autre qui crée avec malloc, une autre qui copie un prototype précis (et ce pour chaque type que peut stocker la factory), donc on a pour commencer une hiérarchie de classes moins conséquente à parcourir lors de la manipulation des objets.
D'autres exemples ? Vous connaissez les smart pointers ? Différents comportements disponibles à partir du même code encore une fois, grâce aux templates.
Ca vous met pas la puce à l'oreille ? Si non, on arrête le débat là, vous êtes trop entêtés pour vouloir comprendre quelque chose à ce qu'on dit.
C'est si bidon que le Java, le C# et le D ont récupéré les templates eux aussi ? Arrêtez un peu de vous entêter et acceptez qu'on vous apprenne des choses.
__________________________
Be C++ Mon Blog (C++, Intelligence Artificielle, Prolog)
J'ai pas dit que les templates c'était nul... J'ai juste dit que j'en vois un intérêt assez limité (dans le cadre de mes besoins toujours) ...
Les exemples que tu donnes restent vachement axés C++ (malloc, smart pointeurs)... normal tu fais du C++ (c'est pas un reproche).
Moi je veux bien coder une factory en template (C#) si tu me dis que c'est mieux... mais tu n'as pas dit ce qui était mieux avec ceux-ci (juste parlé du comportement de création... chose dont je me fou totalement en C#)... Et puis en plus de çà, si tu change le comportement de création dans ton tempalte en fonction du type reçu, tu limites les possibilités en faisant des conditions sur les types reçus... Y'a un truc qui m'échappe dans ton exemple...
Le malloc c'est pas pareil que le new (c'est quoi la différence en fait... c'est quasi pareil... non ?) ?
__________________________
Sujet résolu ? Pensez à mettre le tag
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.
le plus simple c'est quand meme que vous appreniez comment ca marche les templates. Ensuite vous trouverez vous memes quels sont les problemes que vous pouvez resoudre avec.
Vous me faites penser a des mecaniciens qui feraient tout avec le marteau, on vous presente une pince et vous dites "ca ne sert a rien je refuse de m'en servir car je fais tout avec mon marteau". Meme si c'est vrai que vous faites tout avec un marteau il n'empeche que des choses se font "mieux" avec une pince.
En temps que conducteur dont la voiture est cassée si mon mecano me sort un truc pareil je ne retourne plus jamais le voir. En temps que recruteur si un candidat me dit qu'il refuse de se servir des templates car il code tout en POO je le raccompagne a la porte. Si un mec me dit qu'il n'a pas besoin de POO car il code tout en template je le reconduit aussi a la porte.
Si vous pouviez faire preuve d'un millimetre d'ouverture d'esprit vous verriez quue c'est une autre facon de penser et de resoudre les problemes qui remplace tres adroitement la POO par endroit =)
screetch dit : le plus simple c'est quand meme que vous appreniez comment ca marche les templates. Ensuite vous trouverez vous memes quels sont les problemes que vous pouvez resoudre avec.
Vous me faites penser a des mecaniciens qui feraient tout avec le marteau, on vous presente une pince et vous dites "ca ne sert a rien je refuse de m'en servir car je fais tout avec mon marteau". Meme si c'est vrai que vous faites tout avec un marteau il n'empeche que des choses se font "mieux" avec une pince.
En temps que conducteur dont la voiture est cassée si mon mecano me sort un truc pareil je ne retourne plus jamais le voir. En temps que recruteur si un candidat me dit qu'il refuse de se servir des templates car il code tout en POO je le raccompagne a la porte. Si un mec me dit qu'il n'a pas besoin de POO car il code tout en template je le reconduit aussi a la porte.
Si vous pouviez faire preuve d'un millimetre d'ouverture d'esprit vous verriez quue c'est une autre facon de penser et de resoudre les problemes qui remplace tres adroitement la POO par endroit =)
Tu réponds toujours au même message ou quoi... J'ai pas dit que j'étais fermé aux templates... loin de là... J'ai juste dit que je leur trouve un domaine d'application très limité (çà veut aussi dire que je connais les templates)... et j'ai pas dit que parce que je l'ai dit que c'était vrai dans l'absolu... mais juste pour moi et pour l'instant... J'ai également dit que les exemples que vous avez donné restent très orienté C++ et ne sont ni utiles ni exploitables dans des langages modernes tels que C#... C'est toujours pour çà qu'après c'est 6 pages sur les templates, je n'ai toujours pas pu trouver un argument qui me mette la puce à l'oreille pour me dire : "Tiens, c'est vrai que c'est pas mal çà... et si j'essayais d'en savoir un peu plus"... Mais je le répète... Si vous trouvez un exemple qui soit indépendant du langage employé et qui mette bien en avantage l'utilité des templates par rapport à la POO... Ben soyez sûr que j'irais tout de suite voir de quoi il en retourne...
__________________________
Sujet résolu ? Pensez à mettre le tag
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.
c'est le forum C++ et la question porte sur les template, donc oui nous avons des exemples tres "C++iens" :(
C# a des features que C++ n'a pas au niveau de l'introspection (et qui font vraiment defaut a C++) par exemple et ca resout carrément plein de problemes (dont peut etre les factory d'ailleurs) donc pas glop de transposer un outil d'un langage pour un autre langage :-/
Bon ben j'ai à peu près tout lu (me suis arrêté au 2.2, çà devenait difficile à suivre pour moi qui ne fait plus de C++ depuis un moment)... J'ai pas tout compris non plus... Du genre les premiers exemple sur les traits, je vois pas bien comment çà fonctionne en interne... L'exemple sur la fonction min était plus clair... mais reste toujours dans le cadre d'utilité que je voyais pour les templates... Pour les politiques, j'ai pas bien saisi l'exemple d'Addition... Qu'est ce qui se passe si on y met un type String ? Si çà concatène les string, ben j'ai rien compris à ce code... J'ai d'ailleurs même pas compris comment fonctionnait la boucle for (avec des références ? )... Enfin bref... c'était quand même instructif... peut être que si je faisais du C++, çà me serait utile, je dis pas le contraire... mais pour l'instant je n'en vois toujours pas une très grande utilité en C#... même si de revoir pas mal de code sur les templates m'a ravivé quelques souvenirs de code template que je pourrais faire éventuellement...
Faudrait que j'essaie vraiment de coder quelque chose avec des templates dans un de mes programme que je vois où çà peut vraiment me servir... Si je le fais, je vous tiendrai au courant...
__________________________
Sujet résolu ? Pensez à mettre le tag
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.
Oui oui, c'est ce que j'ai dit... J'ai dit "faudrait"... donc j'ai pas abandonné du tout... et puis comme tu l'as dit... j'aurais pas pu tout comprendre en 2 minutes...
__________________________
Sujet résolu ? Pensez à mettre le tag
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.