$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Dhanvi Kapila (boostguy_at_[hidden])
Date: 2006-03-23 22:22:38
Hi Friends,
 
 I have a boost::shared_ptr that stores a pointer to a base class ( 
class B1 ) and derived classes ( class D1 , class D2 )  both inheriting 
from the same Base class.
 The Constructors
I have another set of factory classes ( base class : class base1, 
derived class : class derv1 & class derv2 ) whoose constructors accepts 
boost::shared_ptr of B1.
When constructing derv1: I would like to cast pointer as D1 and ,when 
constructing derv2 : cast pointer as  D2,  but the only way I can access 
the class functions is through a shared_ptr to B1.
My question is how do I cast B1 to get D1 and D2 in the constructors for 
derv1 and derv2 respectively ?
the pseudo code is
base1* createBase( boost::shared_ptr<B1> b_ptr , int type )
{
       if( type == 1 )
          return new derv1( boost::polymorphic_downcast<AAAA> b_ptr );
       else
          return new derv2( boost::polymorphic_downcast<XXXX> b_ptr );
}
what do i write in the place of AAAA & XXXX  for the code to wrk ??
Sorry for the long question, but could not express it in any shorter way.. 
thanks for ur patience and replies
Dhanvi