From: "David C. Hoos, Sr." <david.c.hoos.sr@ada95.com>
Subject: Re: Conversion of Access Types Question
Date: 1999/01/14
Date: 1999-01-14T00:00:00+00:00 [thread overview]
Message-ID: <77l492$b5s@hobbes.crc.com> (raw)
In-Reply-To: 369DFFFC.A160D47C@neta.com
Paul S. Heidmann wrote in message <369DFFFC.A160D47C@neta.com>...
>Greetings fellow Ada lovers!
>
>I'm an experienced Ada83 programmer that is learning to use Ada95.
>Things are going very well, but I don't understand the problems
>that I'm having converting access types that point to variables of
>class wide types. Consider the following piece of code:
>
>=======================================
>
>procedure Types is
>
> type T1 is tagged
> record
> I : Integer;
> end record;
> type A_T1 is access all T1'Class;
>
> type T2 is new T1 with
> record
> I2 : Integer;
> end record;
> type A_T2_Classwide is access all T2'Class;
> type A_T2 is access T2;
>
> Thing1 : A_T1;
> Thing2 : A_T2_Classwide;
> Thing3 : A_T2;
>
>begin
> Thing1 := new T2;
> Thing2 := A_T2_Classwide (Thing1);
> Thing3 := A_T2 (Thing1); -- illegal, types are not convertable.
>end Types;
>
>=======================================
>
>My question is, why is the last line an illegal conversion, but the
>second to last line not?
>
Compiling your code with gnat results in the following message:
[hoosd@VISNT021 d:/gnat_examples]$ gcc -c types.adb
types.adb:23:14: target type must be general access type
types.adb:23:14: add "all" to type "A_T2" defined at line 14
Making the change the compiler directs solves the problem.
i.e., change line 14 to read:
type A_T2 is access all T2;
next prev parent reply other threads:[~1999-01-14 0:00 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-01-14 0:00 Conversion of Access Types Question Paul S. Heidmann
1999-01-14 0:00 ` David C. Hoos, Sr. [this message]
1999-01-14 0:00 ` Paul S. Heidmann
1999-01-14 0:00 ` Tucker Taft
1999-01-14 0:00 ` David C. Hoos, Sr.
1999-01-15 0:00 ` dewar
1999-01-20 0:00 ` Robert A Duff
1999-01-20 0:00 ` Matthew Heaney
1999-01-20 0:00 ` Tucker Taft
1999-01-21 0:00 ` robert_dewar
1999-01-27 0:00 ` Nick Roberts
1999-01-28 0:00 ` robert_dewar
1999-01-21 0:00 ` robert_dewar
1999-01-21 0:00 ` Tom Moran
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox