From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Thread: 103376,703c4f68db81387d X-Google-Thread: 109fba,703c4f68db81387d X-Google-Thread: 115aec,703c4f68db81387d X-Google-Thread: f43e6,703c4f68db81387d X-Google-Attributes: gid103376,gid109fba,gid115aec,gidf43e6,public X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news1.google.com!newsread.com!news-xfer.newsread.com!nntp.abs.net!news-FFM2.ecrc.net!noris.net!newsfeed.arcor.de!news.arcor.de!not-for-mail From: "Dmitry A. Kazakov" Subject: Re: Teaching new tricks to an old dog (C++ -->Ada) Newsgroups: comp.lang.ada,comp.lang.c++,comp.realtime,comp.software-eng User-Agent: 40tude_Dialog/2.0.14.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Reply-To: mailbox@dmitry-kazakov.de Organization: cbb software GmbH References: <4229bad9$0$1019$afc38c87@news.optusnet.com.au> <1110032222.447846.167060@g14g2000cwa.googlegroups.com> <871xau9nlh.fsf@insalien.org> <3SjWd.103128$Vf.3969241@news000.worldonline.dk> <87r7iu85lf.fsf@insalien.org> <1110052142.832650@athnrd02> <1110284070.410136.205090@o13g2000cwo.googlegroups.com> <395uqaF5rhu2mU1@individual.net> <1110329098.642196@athnrd02> <1110361741.551255@athnrd02> <422edaec$0$26554$9b4e6d93@newsread4.arcor-online.net> <1111464133.508323@athnrd02> <1111508368.393411.6450@z14g2000cwz.googlegroups.com> <1111522653.164049@athnrd02> <9Gi0e.815$FN4.52@newssvr21.news.prodigy.com> <25875118.D6KecKHI6J@linux1.krischik.com> Date: Thu, 24 Mar 2005 12:56:03 +0100 Message-ID: <1gaaa12mhwkch$.13718sqwfpcq0.dlg@40tude.net> NNTP-Posting-Date: 24 Mar 2005 12:55:58 MET NNTP-Posting-Host: 68b6445b.newsread2.arcor-online.net X-Trace: DXC==;]YF49:>ES8f4>W>BJ_OPQ5U85hF6f;TjW\KbG]kaMX]kI_X=5KeaVPV=A211M8^S[6LHn;2LCV^COgUkn_?_Y_[NIWR>=fLjR X-Complaints-To: abuse@arcor.de Xref: g2news1.google.com comp.lang.ada:9899 comp.lang.c++:47051 comp.realtime:1679 comp.software-eng:5284 Date: 2005-03-24T12:55:58+01:00 List-Id: On Thu, 24 Mar 2005 11:47:10 +0100, Martin Krischik wrote: > Hyman Rosen wrote: > >> adaworks@sbcglobal.net wrote: >>> I wish Ada had a good model of multiple inheritance. >> > I don't mean the somewhat haphazard model of C++ >> >> What's wrong with C++'s model? > > As allways: the default behaviour. Default is static inheritance. As it will be with interfaces in Ada 2005, I suppose... > Take the following example: > > class X : public A, public B { }; > > This causes a problem when you have > > class A: public C {}; > > class B public C {}; > > Of couse C++ has a perfectly good solution: > > class A: virtual public C {}; > > class B virtual public C {}; Actually neither solution is automatically good. Consider: class A : public AbstractList {}; class B : public AbstractList {}; class X : public A, public B {}; -- Participates in both lists The problems of C++ model lie elsewhere: 1. It is difficult if possible to express more complex groupings when the same base is sometimes shared and sometimes not, all in the same type hierarchy. 2. Decision about "virtuality" has to be made too early in wrong place. In the example above, it is X, which should decide. 3. C++ model has distributed space overhead. Perhaps, the bases should be subject of overriding in the same way one overrides methods to achieve desired flexibility. So conflicts could be resolved by either renaming=overloading (~non-virtual) or overriding (~virtual). IMO, it was wise not to rush for MI during Ada 95 design... Though MI should be, that's no question. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de