template et version des compilateurs - C++ - Programmation
Marsh Posté le 03-02-2009 à 19:42:11
j'en profite pour caser une deuxième question, est-il possible, de faire/de remplacer, de l'héritage multiple avec des templates?
Marsh Posté le 03-02-2009 à 19:54:05
frenchtoucco a écrit : Hi, |
oui mais c'est une question qui ne veut rien dire. une implémentation est forcément dépendante de quelque chose puisque c'est la matérialisation par des choix techniques d'une conception plus ou moins abstraite.
Marsh Posté le 03-02-2009 à 20:00:13
frenchtoucco a écrit : j'en profite pour caser une deuxième question, est-il possible, de faire/de remplacer, de l'héritage multiple avec des templates? |
non. pas dynamiquement
Marsh Posté le 03-02-2009 à 20:12:10
et quand l'architecture logicielle est figée, on peut le faire donc, en statique
Marsh Posté le 03-02-2009 à 20:15:02
Taz a écrit : |
Mais est ce que les compilateurs respectent tous la norme ANSI/C++ concernant l'implémentation des templates ? ou y a t-il des variantes ? variantes qui n'existent pas par exemple pour d'autres outils du langage comme la prise en charge du polymorphisme ou bien la surchage d'opérateur par exemple? En d'autre terme les templates sont-elles un cas à peu à part ?
Marsh Posté le 03-02-2009 à 20:30:04
mais la norme ne dit jamais comment implémenter. c'est justement le gros point fort du C et du C++: très peu de pré-requis, champ libre à l'implémentation.
Marsh Posté le 03-02-2009 à 20:38:03
frenchtoucco a écrit : et quand l'architecture logicielle est figée, on peut le faire donc, en statique |
non je veux dire au sens virtual, déjà avec des template tu ne peux pas simuler ce degré de polymorphisme. alors le multiple ...
Marsh Posté le 03-02-2009 à 20:40:01
Enfin deux questions comme ça, ça me pose plus le problème de la compétence de celui qui les pose.
Par exemple la première: la formulation est mauvaise, mais peut-être que la réponse c'est un truc du genre "faut avoir le code pour compiler du template, donc ça dépend forcément du compilateur". Mais y a mélange des genres. Tu peux très bien avoir une bibliothèque, qui te donnes des X<T>, X<U> et X<V> et qui te fournit: un .o/.dso/.a dans lequel sont instanciés ces template et un .hpp purement déclaratif, c'est à dire que tu n'a pas le code même du template à disposition. (modèle de l'instanciation séparée).
Marsh Posté le 03-02-2009 à 20:51:49
mais qu'est ce que c'était que cette question moisie alors.... Bon je me ss fait avoir pour le coup du template/héritage multiple, j'ai répondu que c'était possible, fuck !
Marsh Posté le 03-02-2009 à 22:18:43
mais quelles questions en bois v_v le truc qui sert bien à rien
Marsh Posté le 04-02-2009 à 08:16:57
Ce genre de question en QCM? Je veux bien quand il y a quelqu'un en face pour eclaircir les ambiguites, mais en QCM?
Sur les variations dans l'implementation des templates. La non implementation de export est quasiment universelle. Il y avait encore recemment des compilateurs n'implementant pas la recherche de nom en deux temps (je n'ai pas verifie sur les dernieres versions). Et je ne parle pas des problemes avec les membres templates qui sont implementes par les compilateurs dont je dispose mais qui ont eu du retard a l'allumage (avec comme effet qu'une des SL de SunStudio n'est pas configuree pour l'utiliser).
Quant a la question sur l'heritage multiple. On peut se servir des templates pour lineariser certains heritages multiples -- il y a eu un papier qui utilisait cette technique (de Dos Reis et Stroustrup, j'arrive pas a retomber dessus, le sujet du papier etait leur infrastructure pour les DSL dont j'ai oublie le nom). La technique est applicable aux hierarchies en echelle -- typiques quand on a une hierarchie d'interfaces et une hierarchie d'implementation. On a la hierarchie d'implementation qui est template et le parametre template sert de classe de base (et est typiquement dans la hierarchie d'interface). Et il y a quelques inconveniants aussi. Mais devant un QCM je me demanderais si l'auteur pensait a ca ou bien en ignorait completement l'existance.
Marsh Posté le 04-02-2009 à 08:51:15
Tu aurais un squelette de code pour illustrer tes propos concernant la linéarisation de MI ? j'ai du mal à voir concrètement ce que ça donne, merci.
Marsh Posté le 04-02-2009 à 08:57:51
J'ai retrouve ceci: http://www-unix.mcs.anl.gov/worksh [...] osReis.pdf, slides 7 et 8.
Marsh Posté le 04-02-2009 à 09:22:05
mais ça demande la création d'un outil externe, ou d'un compilateur spécial cette technique, nan ?
Marsh Posté le 04-02-2009 à 09:48:17
La technique non -- le sujet de la presentation, c'est effectivement ce genre d'outils.
Marsh Posté le 04-02-2009 à 09:59:05
Mais alors peut-on dire pour autant que l'on peut faire de l'héritage multiple avec des templates en C++ ?
Marsh Posté le 04-02-2009 à 11:38:33
* On peut avoir des hierarchies avec de l'heritage multiple et des templates.
* On peut utiliser des solutions sans heritage multiple et avec templates dans des cas ou les alternatives semblent toutes necessiter de l'heritage multiple.
(Et n'oublie pas qu'avec suffisamment duplication et de wrappers, tu n'as jamais besoin d'heritage multiple).
Marsh Posté le 03-02-2009 à 19:33:38
Hi,
Suite à un qcm C++ d'une boite pour un entretien d'embauche....
L'implémentation des templates est-elle dépendante des compilateurs?
Merci.
---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.