
Hi, class A; class B; typedef boost::shared_ptr<A> pSharedPtrA; typedef boost::shared_ptr<B> pSharedPtrB; class B { public: int memberB; }; Class A { public: pSharedPtrB pMember; }; Suppose i have one shared pointer of type pSharedPtrA pointing to an object of class A and the member variable pMember pinging to a valid object of class B. Now if i pass the shared pointer of type pSharedPtrA to a function suppose Test_Func(pSharedPtrA): void Test_Func(pSharedPtrA pLocalA) { pSharedPtrA ptrA = boost::static_pointer_cast<A> (pLocalA) pSharedPtrB tmpB = boost::static_pointer_cast<B>(ptrA->pMember) Another_Func(tmpB) } Another_Func(pSharedPtrB pLocalB) { int x = pLocalB->memberB; //Gives WRONG value pSharedPtrB ptmp = boost::static_pointer_cast<B> (pLocalB) x = ptmp ->memberB; //Gives CORRECT Value } The problem is when typecast is not used then in function Another_Func(pSharedPtrB pLocalB), pLocalB->memberB is not giving the correct result but after typecast it is giving the correct results. The inference is that in function Another_Func() data is preserved in the pLocalB but without typecast i am not able to access it. Though i have not declared any virtual functions in above code but where we are having problem does contain the vritual functions. I dont know if it has any bearing on behavior observed. I want to know why typecasting is required to get the correct result and why cant i access the members without typecasting. Thanks and Regards Deepak