comp.lang.ada
 help / color / mirror / Atom feed
* private classes
@ 2004-10-02 20:35 Rick Santa-Cruz
  2004-10-02 21:12 ` Rick Santa-Cruz
  2004-10-03 16:36 ` Martin Krischik
  0 siblings, 2 replies; 4+ messages in thread
From: Rick Santa-Cruz @ 2004-10-02 20:35 UTC (permalink / raw)


Hi,

sorry for so many question, but always when I thought I understand it, I 
read further and see a new problem... so given the following source-code:
package Classes is
 type Base_1 is tagged private;

 type Derived_1 is new Base_1 with private;

 procedure Proc(B: Base_1);

 private
  type Base_1 is tagged record
   Number: Integer;
  end record;

  type Derived_1 is new Base_1 with null record;
end Classes;

package body Classes is
 procedure Proc(b: Base_1) is
 begin
  null;
 end Proc;
end Classes;

with Classes;

procedure main is
 D: Classes.Derived_1;
begin
 Classes.Proc(D);
end Main;

I get an error in calling Classes.Proc(D). Although I thought that cause 
Derived_1 inherits from Base_1 the call should be possible. In fact exactly 
this I found in the book from John English in chapter 14.5. Why can't I 
compile such, although I thought the function Proc is visible for clients of 
the package Classes.
My second question is then, if the above does not work (and I really wonder 
why) then, what would it make for a difference if instead of writing:
type Derived_1 is new Base_1 with private;
I write:
type Derived_1 is private;
and then in the private-part of the package:
type Derived_1 is new Base_1 with null_record;
What would be the difference between that and the definition above?

Thanks tons in advance, cause I really start to become desperate ;(.

Bye,
Rick





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

end of thread, other threads:[~2004-10-03 19:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-10-02 20:35 private classes Rick Santa-Cruz
2004-10-02 21:12 ` Rick Santa-Cruz
2004-10-03 19:11   ` Ludovic Brenta
2004-10-03 16:36 ` Martin Krischik

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