comp.lang.ada
 help / color / mirror / Atom feed
From: jsa@organon.com (Jon S Anthony)
Subject: Re: Variant record assignment Q:
Date: 1996/07/10
Date: 1996-07-10T00:00:00+00:00	[thread overview]
Message-ID: <JSA.96Jul10141137@organon.com> (raw)
In-Reply-To: 31E32A82.3984D09E@jinx.sckans.edu


In article <31E32A82.3984D09E@jinx.sckans.edu> David Morton <dmorton@jinx.sckans.edu> writes:

> I would like to be able to say,
> 
> Tmp : String_Ptr;
> Root : Object_Ptr; 
> 
> Tmp := new String("test");
                   ^needs a "'" as in String'("test")

> Root := new Object(Button)'(Status => Button, X => 10, Y => 10, Name => Tmp, Status =>
> Something);

The discriminant is just part of the aggregate:

Root := new Object'(Obj => Button, ....);


> One particular error I tend to get (that is confusing me)is:
> 
> 
> Tmp := new String'("test");
> 
> Root := new Object(Obj => Button); -- line 24 BTW
> Root.all := (Status => Button, X => 10,Y => 10, Name => Tmp, Status_Code => This); 
> 
> user_info_management.adb:25:13: no value supplied for discriminant "Obj"

There are two problems here.  First, you can't make an assignment to a
discriminated record without specifying the discriminant.  So, you would
need to say:

Root.all := (Obj => Button, ...);

Second, you can't change the discriminant of a constrained object which is
what Root.all is as the discriminant in its type has no default.  So, you
can't do the Root.all assignment anyway.

You have several options.

* You can assign individual fields (probably not what you really want)

* You can give the full value when you create the (constrained) object:
  Root := new Object'(...disriminant and all the other fields...).

* You can change the type so that it has defaults for the discriminants
  and then do the full assignment mentioned above.

Depending on what you really are trying to accomplish there are probably
others (for example using tagged types instead of discriminated record)

/Jon
-- 
Jon Anthony
Organon Motives, Inc.
1 Williston Road, Suite 4
Belmont, MA 02178

617.484.3383
jsa@organon.com





      parent reply	other threads:[~1996-07-10  0:00 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-07-09  0:00 Variant record assignment Q: David Morton
1996-07-10  0:00 ` David Morton
1996-07-11  0:00   ` Steve O'Neill
1996-07-10  0:00 ` Jon S Anthony [this message]
replies disabled

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