From: vlc <just.another.spam.account@googlemail.com>
Subject: Can a child access private types of its parent?
Date: Tue, 21 Jul 2009 04:42:36 -0700 (PDT)
Date: 2009-07-21T04:42:36-07:00 [thread overview]
Message-ID: <5607fca0-895c-47ca-abdf-7c9700b20b04@h18g2000yqj.googlegroups.com> (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!
next reply other threads:[~2009-07-21 11:42 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-21 11:42 vlc [this message]
2009-07-21 12:05 ` Can a child access private types of its parent? Dmitry A. Kazakov
2009-07-21 12:07 ` Martin
2009-07-21 12:16 ` vlc
2009-07-25 19:57 ` Yannick Duchêne Hibou57
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox