Re: [Boost-users] Boost-users Digest, Vol 1279, Issue 2
Thank you for you time to answer. Allthough your answer has helped me, I still have the bad_weak_ptr exception. Every time I try to access the shared_from_this pointer from inside Base member functions, I get that exception. What I want to know is how can I access safely an without errors, the shared_from_this pointer inside my Base class, when I create a smart pointer instance of my Derived class. In derived I don't have that problem (I can access shared_from_this) because this is the class the instance is created. Thanks in advance Peter Dimov wrote:
Yaoltzin Gomez wrote:
Basically, what I have is this:
class Base : public boost::enable_shared_from_this<Base> { boost::shared_ptr<Base> GetBasePointer() { return shared_from_this(); }
void Foo() { shared_ptr<Child> child( new Child ); AddChild( child, GetBasePointer() ); } };
class Derived: public Base, public boost::enable_shared_from_this<Derived> { boost::shared_ptr<Derived> GetDerivedPointer() { return shared_from_this(); }
[...]
One way to avoid putting more than one enable_shared_from_this<> base into Derived is to use
class Derived: public Base { boost::shared_ptr<Derived> GetDerivedPointer() { return dynamic_pointer_cast<Derived>( shared_from_this() ); }
// ... };
static_pointer_cast will also work in this case (it will fail if Derived uses virtual inheritance).
Yaoltzin Gomez wrote:
Thank you for you time to answer. Allthough your answer has helped me, I still have the bad_weak_ptr exception. Every time I try to access the shared_from_this pointer from inside Base member functions, I get that exception. What I want to know is how can I access safely an without errors, the shared_from_this pointer inside my Base class, when I create a smart pointer instance of my Derived class.
Can you post a complete example program that demonstrates the problem?
participants (2)
-
Peter Dimov
-
Yaoltzin Gomez