|
Boost Users : |
From: Andrew Mellinger (amelling_at_[hidden])
Date: 2007-03-01 14:37:52
On 3/1/07 2:18 PM, "gast128" <gast128_at_[hidden]> wrote:
> Dear all,
>
> I ran into an exception thrown by the constructor. But there is no way to
> call 'delete_created_pointers' on the object since the object is never fully
> created (see below)
>
> Is there something to do about?
<snip>
> This throwing c++ constructor stuff is btw the way to transport errors
> according to a lot of c++ gurus. But my persnonal opinion is that it sucks.
> Every created object must be guarded with exception safety. For large
> applications, this exception mecahnism is very tricky and sources for a lot
> unwanted application terminations or memory leaks.
I agree. At my workplace we have a convention. For heavyweight objects
that would do interesting things in their constructors we instead use the
alloc-init paradigm of Objective-C. In this model, the constructor does
simply non-error things, then a corresponding init (or even suite of init
methods) does the interesting things. This has the added benefit that the
init method can be overridden in subclasses, and you don't need to
re-implement all the behaviors.
-Andrew
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net