Estoy usando los punteros compartidos de boost, y enable_shared_from_this
para habilitar la devolución de un puntero compartido a esto. Código es el siguiente:boost weak_ptr_cast en shared_from_this()
class foo : public boost::enable_shared_from_this<foo>
{
boost::shared_ptr<foo> get()
{
return shared_from_this();
}
}
¿Por qué shared_from_this lanzar una excepción weak_ptr_cast?
Llamar 'shared_from_this()' del constructor es probablemente * la * razón por la cual 'shared_from_this()' falla (me refiero al desarrollo, no en el código de producción, por supuesto). Lamentablemente, la mejor solución (¿solo?) Parece ser la construcción en dos fases (con todas sus desventajas). –