$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [boost] dynamic_cast with WeakPtr?
From: Sören Freudiger (muffmolch_at_[hidden])
Date: 2008-11-24 15:09:54
ups, sorry, my fault.. the example seems to work, but I run into that
problem because I tried to perform an dynamic_cast on that weak_ptr. How
this should be done in this simple example?
class Base
{
public:
boost::weak_ptr<Base> neigh;
};
class Derived : public Base
{
};
int main()
{
{
boost::shared_ptr<Base> a(new Base);
boost::shared_ptr<Derived> d(new Derived);
a->neigh = d;
d->neigh = a;
//like that?
boost::shared_ptr<Derived> pD2 = boost::shared_dynamic_cast< Derived
>( a->neigh.lock());
}
}
-----Ursprüngliche Nachricht-----
Von: Sören Freudiger [mailto:muffmolch_at_[hidden]]
Gesendet: Montag, 24. November 2008 21:03
An: boost_at_[hidden]
Betreff: dynamic_cast with WeakPtr?
Hi @all
Maybe you can help me. I tried to use weak_ptr for breaking circular
references, but I found out that this pointers can't handle derived classes.
But in my classes I have some neighbor relations that I want to tore with
shared_ptr:
class Base
{
public:
boost::shared_ptr<Base> neigh;
};
class Derived : public Base
{
};
int main()
{
{
boost::shared_ptr<Base> a(new Base);
boost::shared_ptr<Derived> d(new Derived)
a.neigh = d;
d.neigh = a;
}
//both objects are in memory because of circular references, but weak
pointer doesn't work,
//becaus eit seems to be unable handling derived classes... and there's
no dynamic cast
}
How do you solve problems like that with boost pointers avoiding circular
references?
Best reagrds,
SirAnn