Boost logo

Boost Users :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2002-11-27 07:03:59


From: "Hickman, Greg" <greg.hickman_at_[hidden]>
> > From: Peter Dimov [mailto:pdimov_at_[hidden]]
> > If 'f' is virtual, have the object store a weak_ptr to itself:
> >
> > class X
> > {
> > private:
> >
> > weak_ptr<X> weak_this;
> >
> > X();
> > X(X const &);
> > X& operator=(X const &);
> >
> > public:
> >
> > static shared_ptr<X> create()
> > {
> > shared_ptr<X> px(new X);
> > px->weak_this = px;
> > return px;
> > }
>
> I must be missing something here, because it appears as though you can't
> derive a Y from X and still initialize X::weak_this.

You could simply make X::weak_this and X::X() protected... although if you
follow the design rule that says that non-leaf classes should be abstract
(and if possible contain no data) this shouldn't be necessary, as X as
pictured above would be a leaf.


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