comp.lang.ada
 help / color / mirror / Atom feed
* Can a child access private types of its parent?
@ 2009-07-21 11:42 vlc
  2009-07-21 12:05 ` Dmitry A. Kazakov
  2009-07-21 12:07 ` Martin
  0 siblings, 2 replies; 5+ messages in thread
From: vlc @ 2009-07-21 11:42 UTC (permalink / raw)


Hi *,

in the following code extract, I try to access a private variable I
(line 09) in the Parent's type P from Child (in function Get, line
23):

01  with Ada.Integer_Text_Io; use Ada.Integer_Text_Io;
02
03  procedure Main is
04
05  package Parent is
06        type P is tagged private;
07     private
08        type P is tagged record
09           I : integer := 5;
10        end record;
11     end Parent;
12
13     package Child is
14        type C is new Parent.P with private;
15        function Get (This : C) return integer;
16     private
17        type C is new Parent.P with null record;
18     end Child;
19
20     package body Child is
21        function Get (This : C) return integer is
22        begin
23           return This.I;
24        end Get;
25     end Child;
26
27     Var : Child.C;
28
29  begin
30
31     Put (Var.Get);
32
33  end Main;

But the compiler gives me a
main.adb:23:21: no selector "I" for type "C" defined at line 17

The code compiles if I make the type P public, i.e. if I comment the
lines 06 and 07, the code compiles as the variable I gets inherited to
Child. But then everybody can not only read but also write Var.I, e.g.

29  begin
30
31     Var.I := 2;
32     Put (Var.Get);
33
34  end Main;

Is there a way to inherit private types from a Parent to its child?

Thank a lot in advance for any help!



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-07-25 19:57 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-07-21 11:42 Can a child access private types of its parent? vlc
2009-07-21 12:05 ` Dmitry A. Kazakov
2009-07-21 12:07 ` Martin
2009-07-21 12:16   ` vlc
2009-07-25 19:57     ` Yannick Duchêne Hibou57

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox