dynamic_pointer_cast
Conversión de tipos dinámica a shared_ptr.
template <class Ty, class Other>
shared_ptr<Ty> dynamic_pointer_cast(const shared_ptr<Other>& sp);
Parámetros
Ty
El tipo controla el puntero compartido devuelto.Other
El tipo controla el argumento compartan el puntero.sp
El argumento compartan el puntero.
Comentarios
La función de la plantilla devuelve un objeto vacío shared_ptr si dynamic_cast<Ty*>(sp.get()) devuelve un puntero NULL; si no devuelve un objeto de shared_ptr (Clase)<Ty> que posee el recurso que es propiedad de sp. La expresión dynamic_cast<Ty*>(sp.get()) debe ser válida.
Ejemplo
// std_tr1__memory__dynamic_pointer_cast.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>
struct base
{
virtual ~base()
{
}
int val;
};
struct derived
: public base
{
};
int main()
{
std::shared_ptr<base> sp0(new derived);
std::shared_ptr<derived> sp1 =
std::dynamic_pointer_cast<derived>(sp0);
sp0->val = 3;
std::cout << "sp1->val == " << sp1->val << std::endl;
return (0);
}
Requisitos
Encabezado: <memory>
Espacio de nombres: std