habilitar compartido desde esto y herencia


Tengo un tipo que hereda de enable_shared_from_this<type>, y otro tipo que hereda de este tipo. Ahora no puedo usar el método shared_from_this porque devuelve el tipo base y en un método de clase derivado específico necesito el tipo derivado. ¿Es válido simplemente construir un shared_ptr a partir de esto directamente?

Editar: En una pregunta relacionada, ¿cómo puedo pasar de un rvalue de tipo shared_ptr<base> a un tipo de shared_ptr<derived>? Utilicé dynamic_cast para verificar que realmente era el tipo correcto, pero ahora parece que no puedo lograr el movimiento real.

Author: James McNellis, 2010-12-20

1 answers

Una vez que obtenga el shared_ptr<Base>, puede usar static_pointer_cast para convertirlo a shared_ptr<Derived>.

No puedes simplemente crear un shared_ptr directamente desde this; eso sería equivalente a:

shared_ptr<T> x(new T());
shared_ptr<T> y(x.get()); // now you have two separate reference counts
 21
Author: James McNellis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-20 16:12:18