On Wed, Jan 11, 2012 at 4:18 PM, Don Wilde
<donintel11@yahoo.com> wrote:
Greetings, all -
I am updating a neural network package from the DOS days to modern C++ standards.
I have a shared_ptr to a vector of shared_ptrs of type Layer. This class has derived classes OutputLayer, MiddleLayer and InputLayer. Each of these has their own method for calculating output updates, so I need to be able to cast. from boost::shared_ptr<Layer> to static_cast<OutputLayer*>().
Unfortunately, VC++ 2010 will not allow me to do so. It won't even allow a reinterpret_cast. I've looked on the Web and I also have Schalling's guide to Boost.
Not only VC++ does not allow this, but the C++ standard as well.
Thank you in advance for your guidance. I'm using boost_1_47_0, if that makes a difference. :D
Use tools provided by the shared_ptr itself...
template<class T, class U>
shared_ptr<T> static_pointer_cast(shared_ptr<U> const & r); // never throws
template<class T, class U>
shared_ptr<T> const_pointer_cast(shared_ptr<U> const & r); // never throws
template<class T, class U>
shared_ptr<T> dynamic_pointer_cast(shared_ptr<U> const & r); // never throws
Greetings,
Ovanes