From: sabljak@cs.rmit.edu.au (Steve Sabljak)
Subject: Re: run-time type identification
Date: 1998/09/03
Date: 1998-09-03T13:20:39+00:00 [thread overview]
Message-ID: <6sm537$agc$1@emu.cs.rmit.edu.au> (raw)
In-Reply-To: 01bdd72e$49ee66b0$f330ea9e@ukp03332
"Bob Fletcher" <bob@radge.globalnet.co.uk> writes:
>Is there any equivalent in Ada 95 to the C++ "dynamic_cast" operator?
>For example, say you have a class A, and a derived class A2.
>In the package for class A there is also:
> type A_Ptr is access A'Class;
>You can assign an access to an object of class A2 to a variable of type
>A_Ptr, but, as far as I know, cannot then de-reference the A_Ptr in such a
>way that the extra bits of class A2 are accessible.
>It seems to me that this is something that would make a lot of sense when
>dealing with class-wide access types, which can easily be used to go up the
>object heirarchy, but not, as far as I know, to go back down, (without
>messing about with unchecked_conversion).
You can do run-time type identification like this
with Ada.Tags; use Ada.Tags;
with A; use A;
procedure Tag_Test is
Generalised : A_Ptr;
Specialised : A2_Ptr;
Specialised_2 : A2_Ptr;
begin
Specialised := new A2'(X => 1, Y => 2);
Generalised := Specialised;
if Generalised'Tag = A2'Tag then
Specialised_2 := A2_Ptr(Generalised);
end if;
end Tag_Test;
cheers
-Steve
--
Steve Sabljak - RMIT - 3rd Year Computer Science
e-mail: sabljak@cs.rmit.edu.au
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
next prev parent reply other threads:[~1998-09-03 0:00 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
1998-09-03 0:00 run-time type identification Bob Fletcher
1998-09-03 0:00 ` Steve Sabljak [this message]
1998-09-03 0:00 ` Matthew Heaney
1998-09-03 0:00 ` Steve Sabljak
1998-09-03 0:00 ` Matthew Heaney
1998-09-03 0:00 ` Bob Fletcher
1998-09-03 0:00 ` Matthew Heaney
1998-09-03 0:00 ` Tucker Taft
1998-09-03 0:00 ` Samuel Tardieu
1998-09-03 0:00 ` Bob Fletcher
1998-09-03 0:00 ` Matthew Heaney
1998-09-06 0:00 ` Samuel Tardieu
1998-09-03 0:00 ` Fergus Henderson
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox