From: Robert A Duff <bobduff@world.std.com>
Subject: Re: Self-referential types
Date: 1999/10/12
Date: 1999-10-12T00:00:00+00:00 [thread overview]
Message-ID: <wcc3dvg4ofl.fsf@world.std.com> (raw)
In-Reply-To: 7ttb4a$8mq$1@nnrp1.deja.com
Ted Dennison <dennison@telepath.com> writes:
> I'm trying to create my first self referential type. But there's
> obviously something about this technique I'm missing, because all
> attempts produce compiler errors in multiple compilers.
>
> Below is a code sample that is taken directly from Cohen's AAASL,
> section 11.8.3:
>
> procedure Test is
>
> type Cell_Type;
>
> type List_Type is access all Cell_Type;
>
> type Cell_Type is
> limited record
> Contents_Part : String (1..20);
> Next_Cell_Part : List_Type := Cell_Type'Access;
> Previous_Cell_Part : List_Type := Cell_Type'Access;
> end record;
> begin
> null;
> end Test;
>
> Compiling this with Gnat gives me:
> Test.adb:10:43: non-local pointer cannot point to local object
> Test.adb:11:43: non-local pointer cannot point to local object
>
> I don't see an accesability level problem here, ...
X: List_Type;
procedure Nested is
Local: Cell_Type;
begin
X := Local.Next_Cell_Part;
end Nested;
Nested;
... X.all ... -- Here, X is a dangling pointer.
That's the accessibility level problem. You need to use
'Unchecked_Access, and you need to be careful not to do the above.
The language design tries to prevent dangling pointers
unless you do something "unchecked".
>...and it looks like it
> thinks Cell_Type is an object, not a type.
It *is* an object -- the "current instance" of the type (sort of like
"self" or "this" in some other languages).
- Bob
--
Change robert to bob to get my real email address. Sorry.
next prev parent reply other threads:[~1999-10-12 0:00 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <7ttb4a$8mq$1@nnrp1.deja.com>
1999-10-12 0:00 ` Self-referential types Vladimir Olensky
1999-10-12 0:00 ` Matthew Heaney
1999-10-12 0:00 ` news.oxy.com
1999-10-12 0:00 ` Matthew Heaney
1999-10-12 0:00 ` Ted Dennison
1999-10-12 0:00 ` Stanley R. Allen
1999-10-13 0:00 ` Ted Dennison
1999-10-13 0:00 ` Vladimir Olensky
1999-10-14 0:00 ` Multiple Inheritance in Ada 95 [was Re: Self-referential types] Tucker Taft
1999-10-12 0:00 ` Self-referential types Richard D Riehle
1999-10-12 0:00 ` Ted Dennison
1999-10-12 0:00 ` Matthew Heaney
1999-10-12 0:00 ` Robert I. Eachus
1999-10-12 0:00 ` Matthew Heaney
1999-10-13 0:00 ` Vladimir Olensky
1999-10-13 0:00 ` Vladimir Olensky
1999-10-18 0:00 ` Robert Dewar
1999-10-18 0:00 ` Vladimir Olensky
1999-10-18 0:00 ` Laurent Guerby
1999-10-13 0:00 ` Ted Dennison
1999-10-13 0:00 ` Matthew Heaney
1999-10-13 0:00 ` Robert I. Eachus
1999-10-13 0:00 ` Brian Rogoff
1999-10-15 0:00 ` Robert I. Eachus
1999-10-15 0:00 ` Marin David Condic
1999-10-15 0:00 ` Robert I. Eachus
1999-10-18 0:00 ` Robert Dewar
1999-10-19 0:00 ` Robert I. Eachus
[not found] ` <7u86su$o5v$1@nntp8.atl.mindspring.net>
1999-10-18 0:00 ` Robert I. Eachus
1999-10-22 0:00 ` Richard D Riehle
1999-10-22 0:00 ` Robert I. Eachus
1999-10-18 0:00 ` Robert Dewar
1999-10-18 0:00 ` Ed Falis
1999-10-19 0:00 ` Robert Dewar
1999-10-18 0:00 ` Brian Rogoff
[not found] ` <slrn80fl9f.68j.aidan@skinner.demon.co.uk>
1999-10-19 0:00 ` Wes Groleau
1999-10-21 0:00 ` Robert Dewar
1999-10-21 0:00 ` Larry Kilgallen
1999-10-21 0:00 ` Comments (was: Self-referential types) Wes Groleau
1999-10-21 0:00 ` Ehud Lamm
1999-10-22 0:00 ` Ted Dennison
1999-10-23 0:00 ` Ehud Lamm
1999-10-23 0:00 ` Robert Dewar
1999-10-23 0:00 ` Ehud Lamm
1999-10-23 0:00 ` Comments Georg Bauhaus
1999-10-24 0:00 ` Comments Ehud Lamm
1999-10-26 0:00 ` Comments Robert I. Eachus
1999-10-28 0:00 ` Comments Jerry van Dijk
1999-10-28 0:00 ` Comments Ted Dennison
1999-10-25 0:00 ` Comments (was: Self-referential types) Wes Groleau
1999-10-23 0:00 ` M.
[not found] ` <Pine.A41.3.96-heb-2.07.991021191504.30582K-100000@pluto.mscc.huji. <381477c9.e1388ff3@ftw.rsc.raytheon.com>
1999-10-25 0:00 ` Larry Kilgallen
1999-10-21 0:00 ` Self-referential types Jean-Pierre Rosen
1999-10-21 0:00 ` Robert Dewar
1999-10-22 0:00 ` Richard D Riehle
1999-10-23 0:00 ` Robert A Duff
1999-10-23 0:00 ` Richard D Riehle
1999-10-24 0:00 ` Michel DELARCHE
1999-10-12 0:00 ` Robert A Duff [this message]
[not found] ` <3802597B.9205AEE8@averstar.com>
1999-10-12 0:00 ` Ted Dennison
1999-10-12 0:00 ` Matthew Heaney
1999-10-13 0:00 ` Ted Dennison
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox