$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [Boost-users] Cyclic includes when using smart pointers.
From: Peter Dimov (pdimov_at_[hidden])
Date: 2009-03-31 12:12:16
Jared Lee Richardson:
...
> I have the following situation, simplified down.
> 
> Header file 1:
> 
> class Test1
> {
> vector<Test2Ptr> mTest2Objects;
> };
> 
> typedef boost::shared_ptr<Test1> Test1Ptr;
> 
> 
> Header file 2:
> 
> class Test2
> {
> vector<Test1Ptr> mTest1Objects;
> };
> 
> typedef boost::shared_ptr<Test2> Test2Ptr;
> 
> Now normally I'd get around this easily by doing a forward
> declaration, but I can't do that with a smart pointer definition.
Why not? With raw pointers you'd do:
class Test2;
class Test1
{
    vector<Test2*> mTest2Objects;
};
With shared_ptr you do
class Test2;
class Test1
{
    vector< shared_ptr<Test2> > mTest2Objects;
};