Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!rochester!marsh From: marsh@cs.rochester.edu (Brian Marsh) Newsgroups: comp.lang.c++ Subject: Graceful Constructor Degradation Message-ID: <1989Jun25.202052.12100@cs.rochester.edu> Date: 25 Jun 89 20:20:52 GMT Reply-To: marsh@cs.rochester.edu (Brian Marsh) Distribution: usa Organization: U of Rochester, CS Dept, Rochester, NY Lines: 32 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