comp.lang.ada
 help / color / mirror / Atom feed
From: "Rodrigo García" <rodrigo.garcia@epfl.ch>
Subject: Re: Problem Eliminating constructors
Date: Mon, 20 Jan 2003 12:39:04 +0100
Date: 2003-01-20T12:39:04+01:00	[thread overview]
Message-ID: <3E2BDFD8.4070805@epfl.ch> (raw)
In-Reply-To: 3e274cad$0$33929$bed64819@news.gradwell.net

Victor Porton wrote:
> package A is
> 
>   type A_Type is tagged
>     record
>       X: Integer;
>     end;
>     
>   function Create(X: Integer) return A_Type; -- guess what is the body
>   
> end A;
> 
> Then I have
> 
> type B_Type is new A.A_Type with
>   record
>     Y: Integer;
>   end;
> 
> Compiler requires me to override Create as the return type changes.
> But it is meaningless as now I need Create with two parameters
> instead of one.
> 
> What to do?

   You do not need a constructor for this simple case. This will create 
an A_Type object and initialize X to value 5.

   declare
      My_A : A.A_Type := (X => 5);

Similarly, this will create a B_Type object with X=5 and Y=6.

   declare
      My_B : B_Type := (X => 5, Y => 6);

Alternatively, you can use discriminants as well:

   type A_Type (I : Integer) is tagged
      record
         X : Integer := I;
      end record;

And then:

   type B_Type (J : Integer; K : Integer) is new A_Type (I => J) with
      record
        Y : Integer := K;
      end record;

With this solution, you are forced to provide initial values in the 
creation.

Rodrigo




  parent reply	other threads:[~2003-01-20 11:39 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-01-17  0:19 Problem Eliminating constructors Victor Porton
2003-01-17 15:21 ` John English
2003-01-17 21:10 ` Victor Porton
2003-01-18 15:19 ` Simon Wright
2003-01-20 11:39 ` Rodrigo García [this message]
2003-01-20 21:07 ` Victor Porton
2003-01-21  9:44   ` Dmitry A. Kazakov
2003-01-21 19:01     ` Martin Krischik
2003-01-21 11:43   ` Rodrigo García
2003-01-21 15:03   ` Stephen Leake
2003-01-21 13:09 ` Victor Porton
2003-01-22 15:26   ` Rodrigo García
2003-01-21 18:38 ` Victor Porton
2003-01-23 17:08   ` Stephen Leake
  -- strict thread matches above, loose matches on Subject: below --
2003-01-17  6:54 Grein, Christoph
replies disabled

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