On Thu, Aug 14, 2003 at 04:22:10PM +0200, Arnaud Vandyck wrote: > On 14 Aug 2003 15:55:50 +0200 > Nicolas Rueff <[EMAIL PROTECTED]> wrote: > > > Je propose: héritage multiple, certes peu souvent utilisé, mais c'est > > difficile de s'en passer quand on en a vraiment besoin. > > Je ne suis pas dev C++ donc n'hesitez pas a me corriger, mais d'apres ce > que j'ai entendu, l'heritage multiple est plutot source de probleme que > de facilite. > > Maintenant, les interfaces reglent plus ou moins le probleme, et > surtout, on sait quelles seront les methodes qui seront utilisees! ;) > > Si tu veux que A herite de B ET C, tu crees une interface I (sachant que > C implemente I), A herite de B et implemente I, tu encapsule C dans A et > pour les methodes que tu dois surcharger, tu appelles les methodes de > ton instance de C ;)
Je m'étais pourtant juré de ne pas participer au thread... Tant pis. Oui, effectivement, ça marche, mais c'est chiant, car il faut écrire les appels de délégation à la main. Là ou ça devient super lourd, c'est quand tu écris, par exemple, un serveur CORBA. En effet, la classe qui va implémenter l'interface définie en IDL doit étendre un classe de base qui s'occupe du marshalling. Et si jamais on a une interface A qui dérive d'une autre interface B, on ne peut pas faire de l'héritage d'implémentation de BImpl dans AImpl, car AImpl étend _AImplBase, et il faut utiliser une approche par délégation systématique. Ou écrire le serveur en C++. <add item='huile' dest='feu'> Moi, en général, je l'écris le serveur en python, comme ça j'ai les avantages de java et ceux de C++, sans en avoir les inconvénients. :o) OmniOrbPy rulez ! </add> -- Alexandre Fayolle LOGILAB, Paris (France). http://www.logilab.com http://www.logilab.fr http://www.logilab.org Développement logiciel avancé - Intelligence Artificielle - Formations