On 1/23/07, ethann.castell@caliton.com <ethann.castell@caliton.com
> wrote:
class B1 : public B
{
public:
B1(boost::shared_ptr<base_class>
pLinked) : B( pLinked){}
~B1()
{
try{
boost::shared_ptr<base_class>
ptr_This = shared_from_this();
// Exception occurs here
Let me explain why this is exception is thrown. As I said before the object has to be owned by a shared_ptr whenever your are calling
shared_from_this(). To trigger the object's destruction (we are in the destructor) somebody called delete on the object. This can only be the case if the last shared_ptr released the object (i
f there isn't another error). Therefore you are not allowed to call shared_from_this() anymore.
if (f == 3){
boost::shared_ptr<B2>
ptr_b2( new B2(ptr_me) ) ;
// create new
B2 and pass pointer to me.
}else{
//
crashes with bad_weak_ptr error on this line.