comp.lang.ada
 help / color / mirror / Atom feed
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!



             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