
Cast a Layer to an OutputLayer:
boost::shared_ptr<Layer> layer = getLayer();
boost::shared_ptr<OutputLayer> outputLayer =
boost::dynamic_pointer_cast<OutputLayer>(layer);
But please consider to declare your calculation method virtual and to
provide different implementations in your derived classes. You would not
have to cast at all then.
Thomas
-------- Original Message --------
Subject: [Boost-users] casting shared pointers to derived classes
From: Don Wilde
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<*>(). 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. Thank you in advance for your guidance. I'm using boost_1_47_0, if that makes a difference. :D
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users