Voir aussi: Similar questionComment devriez-vous retourner * ceci avec un shared_ptr?
Le code ci-dessous est évidemment dangereux. La question est: comment faites-vous le suivi de la référence à * ceci?
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();
J'ai la réponse (affichée ci-dessous), je veux juste qu'il soit sur stackoverflow (où tout le monde peut me corriger si je me trompe.)
Vous ne savez pas pourquoi ceci a été rejeté .. à partir de la FAQ: Il est également très bien de poser et de répondre à votre propre question de programmation [..] –
Le downvote peut bien avoir été parce que le code que vous avez posté dans la question compile pas. –
Malheureusement, le but n'était pas de fournir un code compilable, mais plutôt d'illustrer le point avec des détails superflus. –