He Ethann,
On 1/23/07, ethann.castell@caliton.com
class B1 : public B { public: B1(boost::shared_ptr
pLinked) : B( pLinked){} ~B1() { try{ boost::shared_ptr 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 (if 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.
This is the same problem again. The exception is thrown by B1's destructor (B2 is derived from B1). Best regards, Philipp