From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Strange error message
Date: Sun, 1 Jun 2014 13:11:08 +0200
Date: 2014-06-01T13:11:08+02:00 [thread overview]
Message-ID: <g4o4rbacbb9z.tweckzb7g3gq$.dlg@40tude.net> (raw)
In-Reply-To: 33e17033-615d-43d4-8b47-9357c8875a10@googlegroups.com
On Sun, 1 Jun 2014 03:24:02 -0700 (PDT), Charly wrote:
> when I defined a class hierarchy I encountered a problem, that I could reduce
> to the following few lines:
>
> This version compiles without problems:
> -----------------
> package Test is
>
> type Base is tagged private;
> function Create return Base;
>
> type High is new Base with private;
You must override Create for High, *always*.
> Why do I have to overide the function Create for type High.
> I don't see the necessity.
>
> Btw. I'm using GNAT GPL 2014 but the same happens with 2013 version.
I believe it was a recent hack (wrongly) added to Ada that you need not to
override primitive operations returning the tagged type when the derived
type does not actually extend. I don't know if making that public or
privately changes anything. You did that privately.
It is an awful idea in any form. You should always override such
operations, and all out-operations, because inheriting them is a priori
unsafe.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2014-06-01 11:11 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-01 10:24 Strange error message Charly
2014-06-01 11:11 ` Dmitry A. Kazakov [this message]
2014-06-01 12:50 ` Charly
2014-06-01 13:54 ` Simon Wright
2014-06-01 21:18 ` Robert A Duff
2014-06-02 7:47 ` Dmitry A. Kazakov
2014-06-02 13:49 ` Robert A Duff
2014-06-02 14:55 ` Dmitry A. Kazakov
2014-06-02 17:24 ` Robert A Duff
2014-06-02 18:39 ` Shark8
2014-06-02 19:56 ` Randy Brukardt
-- strict thread matches above, loose matches on Subject: below --
2002-11-13 10:36 strange " evangeli
2002-11-13 15:05 ` Stephen Leake
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox