From: Dmitry A. Kazakov <mailbox@dmitry-kazakov.de>
Subject: Re: Invoking abstract subprograms in Ada95
Date: Mon, 22 Apr 2002 16:24:26 +0200
Date: 2002-04-22T16:24:26+02:00 [thread overview]
Message-ID: <e068cuk1j6mhque4ajltlu2357supkbor5@4ax.com> (raw)
In-Reply-To: 2dbd76f3.0204220524.158132bb@posting.google.com
On 22 Apr 2002 06:24:15 -0700, michael.jackson5@virgin.net (Mike)
wrote:
>"Grein, Christoph" <christoph.grein@eurocopter.com> wrote in message news:<mailman.1019449992.18314.comp.lang.ada@ada.eu.org>...
>> The following compiles fine (with Rational Apex):
>>
>>
>> package Abstract_Class_Wide is
>>
>> type T is abstract tagged null record;
>>
>> procedure P (X : T) is abstract;
>>
>> procedure C (X : T'Class);
>>
>> end Abstract_Class_Wide;
>>
>> package body Abstract_Class_Wide is
>>
>> procedure C (X : T'Class) is
>> begin
>> P (X);
>> end C;
>>
>> end Abstract_Class_Wide;
>
>Hmm - the only differences I can see here are that my abstract method
>also takes a classwide type,
That's the point. It is not a method [in the meaning "overridable"],
when the formal parameter is class wide. It could be a method only
relatively to some specific formal parameter[s]. Class wide means "one
for all derived types", so it cannot be overridden [at least till an
introduction "class class wide types" (:-))]
> and is implemented in a child package.
>Here's the distilled problem:
>
>--
>package abstract_bit is
>
>type A is abstract tagged null record;
>
>procedure generalOperation( this : in out A'class );
>procedure specificOperation( this : in out A'class ) is abstract;
If your intention is to override specificOperation for derived types,
then it should be exactly as in Christoph's example:
procedure specificOperation( this : in out A ) is abstract;
>end abstract_bit;
>
>--
>package body abstract_bit is
>
>procedure generalOperation( this : in out A'class ) is
>begin
> specificOperation( this => this );
>end generalOperation;
>
>end abstract_bit;
>
>--
>package abstract_bit.concrete_bit is
>
>type C is new A with null record;
>
>procedure specificOperation( this : in out C );
>
>end abstract_bit.concrete_bit;
---
Regards,
Dmitry Kazakov
www.dmitry-kazakov.de
next prev parent reply other threads:[~2002-04-22 14:24 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-04-22 4:28 Invoking abstract subprograms in Ada95 Grein, Christoph
2002-04-22 13:24 ` Mike
2002-04-22 14:24 ` Dmitry A. Kazakov [this message]
-- strict thread matches above, loose matches on Subject: below --
2002-04-24 7:32 Grein, Christoph
2002-04-22 13:44 Grein, Christoph
2002-04-23 8:36 ` Mike
2002-04-19 13:15 Mike
2002-04-19 16:18 ` 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