Véase también: Similar question¿Cómo debería devolver * esto con un shared_ptr?
El código siguiente es obviamente peligroso. La pregunta es: ¿cómo se hace un seguimiento de la referencia a * esto?
using namespace boost;
// MyClass Definition
class MyClass {
public:
shared_ptr<OtherClass> createOtherClass() {
return shared_ptr<OtherClass> OtherClass(this); // baaad
}
MyClass();
~MyClass();
};
// OtherClass Definition
class OtherClass {
public:
OtherClass(const *MyClass myClass);
~OtherClass();
};
// Call; pMyClass refcount = 1
shared_ptr<MyClass> pMyClass(new MyClass());
// Call; pMyClass refcount = 1 => dangerous
pMyClass->createOtherClass();
tengo la respuesta (publicado más adelante), sólo quiero que sea en StackOverflow (donde todo el mundo me puede corregir si estoy equivocado.)
No estoy seguro de por qué se rechaza esto .. de las preguntas frecuentes: también está perfectamente bien preguntar y responder a su propia pregunta de programación [..] –
El voto a favor puede ser porque el código que ha publicado en la pregunta ganó compilar –
Desafortunadamente, el objetivo no era proporcionar un código compilable sino, por el contrario, ilustrar el punto con detalles innecesarios elididos. –