On 1/22/07, ethann.castell@caliton.com <ethann.castell@caliton.com > wrote:
class A : public base_class

classA::Process()
{
        boost::shared_ptr<A> ptr_a = shared_from_this();                // get pointer to myself
                                                                //afterwards - use_count = 2, weak_count = 2
        ...
        if (some_condition){
                boost::shared_ptr<B2> ptr_b2( ptr_a) ;                        // create new B2 and pass pointer to me.
        }else{                                                        // crashes with bad_weak_ptr error on this line.
        }
}




boost::shared_ptr<B2> ptr_b2( ptr_a) does not create a new object of B2. Do you mean ptr_b2(new B2(ptr_a))?

Could you please post a more complete code sample (at least of Process)?