marsh@cs.rochester.edu (Brian Marsh) (06/26/89)
Is there some approved method for returning a failure code
from a constructor and reclaiming the space? I would like
to be able to use the default allocator (well, user_new in
g++) but also to abort the constructor gracefully, allowing
the invoker to take some corrective action.
Having the constructor return 0 or any value other than that provided by
the builtin_new() requires actually assigning to this. Since
any assignment to this precludes automatic allocation, I would
be forced to do my own allocation.
The alternative of having an out parameter which provides a status
code for the object creation works (and allows me to let dynamic
allocation proceed normally), but forces me: (a) to have the status
argument in the first place which seems unnatural, and (b) to return
a valid pointer (well quasi-valid anyway).
In either case I would call delete before returning from the constructor.
Perhaps I am asking for too much; either I should accept doing
the call to the allocator or simply define away the return value as
not being valid.
Comments?
Brian
--
ARPA: marsh@cs.rochester.edu (Brian Marsh) USPS: CS dept, U of Rochester
UUCP: {allegra|decvax|seismo}!rochester!marsh Rochester, NY 14627
CSNET: marsh%cs.rochester.edu@relay.cs.net