comp.lang.ada
 help / color / mirror / Atom feed
From: Matthew Heaney <matthewjheaney@earthlink.net>
Subject: Re: Constructing an object
Date: Fri, 23 Sep 2005 12:36:05 GMT
Date: 2005-09-23T12:36:05+00:00	[thread overview]
Message-ID: <u8xxot0zv.fsf@earthlink.net> (raw)
In-Reply-To: d3jacjqp8gho.y4skgof4w51i.dlg@40tude.net

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:

> Replace it with:
> 
> type Shape (<>) is private;

Yes, but now the type is indefinite, which means you can't declare it as
a component of a composite type.  (This is no different from C++, when
you hide the default ctor.)

The easiest thing is just to default initialize the component(s), and
don't bother declaring the type as indefinite. If you still want to
force some post-declaration initialization, then you do something like:

  type Color_Base is (Uninitialized, Red, Black);
  subtype Color is Color_Base range Red .. Black;

  type Shape is tagged private;

  procedure Set_Color (S : in out Shape; C : Color);
...
private
  type Shape is tagged record
     C : Color_Base := Uninitialized;
  end record;
...
end Shapes;

But again, that would only be necessary if you don't have a sensible
default.  In this particular case, you probably don't need to bother;
just pick on of the colors as the default.



  reply	other threads:[~2005-09-23 12:36 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-21  8:46 Constructing an object Maciej Sobczak
2005-09-21 10:16 ` Georg Bauhaus
2005-09-22  7:21   ` Maciej Sobczak
2005-09-21 11:55 ` Dmitry A. Kazakov
2005-09-22  7:28   ` Maciej Sobczak
2005-09-22  7:45     ` Maciej Sobczak
2005-09-22 13:33       ` Dmitry A. Kazakov
2005-09-24  5:23         ` Randy Brukardt
2005-09-24  9:47           ` Dmitry A. Kazakov
2005-09-29  0:12             ` Randy Brukardt
2005-09-29  8:17               ` Dmitry A. Kazakov
2005-09-29 22:21                 ` Randy Brukardt
2005-09-30  8:14                   ` Jean-Pierre Rosen
2005-09-30 19:28                     ` Dmitry A. Kazakov
2005-09-30 17:49                   ` Robert A Duff
2005-10-01  0:44                     ` Randy Brukardt
2005-10-01 10:49                       ` Dmitry A. Kazakov
2005-10-01 11:06                       ` Tapio Kelloniemi
2005-10-01 14:13                         ` Robert A Duff
2005-10-02 11:52                           ` Tapio Kelloniemi
2005-10-01 15:19                       ` Georg Bauhaus
2005-09-23  5:40 ` Matthew Heaney
2005-09-23  7:18   ` tmoran
2005-09-23  8:23   ` Maciej Sobczak
2005-09-23 12:04     ` Dmitry A. Kazakov
2005-09-23 12:36       ` Matthew Heaney [this message]
2005-09-23 13:03         ` Hyman Rosen
2005-09-23 13:41           ` Maciej Sobczak
2005-09-23 14:23           ` Matthew Heaney
2006-01-17  6:28             ` [Offtopic] " James Dennett
2005-09-23 13:42         ` Dmitry A. Kazakov
2005-09-23 14:27           ` Matthew Heaney
2005-09-23 12:24     ` Matthew Heaney
2005-09-24  5:34       ` Randy Brukardt
replies disabled

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