Vedere anche: Similar questionCome dovresti restituire * questo con un shared_ptr?
Il seguente codice è ovviamente pericoloso. La domanda è: come fai a tenere traccia del riferimento a * questo?
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();
ho la risposta (postato qui sotto), voglio solo che sia su StackOverflow (dove tutti mi può correggere se sbaglio.)
Non sono sicuro del motivo per cui questo è stato votato giù ... dalle FAQ: è anche perfettamente corretto chiedere e rispondere alla propria domanda di programmazione [..] –
Il downvote potrebbe essere stato perché il codice che hai postato nella domanda ha vinto Compilare –
Sfortunatamente, il punto non era fornire codice compilabile ma, al contrario, illustrare il punto con elimini dettagli inutili. –