Boost logo

Boost :

From: Thomas Witt (witt_at_[hidden])
Date: 2002-09-09 15:27:01


Peter,

On Monday 09 September 2002 21:58, Peter Dimov wrote:
> Yes. I need to add this to the documentation one day. This is the "can an
> object create weak pointers to itself in its constructor" question, and the
> answer is "no, make the constructor private, provide a factory method that
> creates shared_ptr<Object> and then creates the weak pointers." You might
> even be able to avoid the counted_base.

IIUC creating shared_ptr's is dangerous as well. Lets assume A takes a
shared_ptr

B::B
{
  a_.reset(new A(shared_from_this(this));
}

If A's ctor throws the dtor of B will be called before its ctor has finished.
It's dangerous business to handle not-fully-constructed objects.

--Thomas

-- 
Dipl.-Ing. Thomas Witt
Institut fuer Verkehrswesen, Eisenbahnbau und -betrieb, Universitaet Hannover
voice: +49(0) 511 762 - 4273, fax: +49(0) 511 762-3001
http://www.ive.uni-hannover.de

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk