他を見る:Similar question* shared_ptrを使って*これを返すべきですか?
以下のコードは明らかに危険です。問題は、あなたは* thisへの参照をどのように把握していますか?
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();
私は答え(下記掲載)を持っている(私が間違っている場合は、誰もが私を修正することができる場所。)、私はちょうどそれがstackoverflowの上になりたい
よくある質問から投票している理由はわかりません。あなた自身のプログラミングに関する質問に答えることもできます。[..] –
質問に投稿したコードが勝った可能性がありますコンパイルしないでください。 –
残念ながら、ポイントはコンパイル可能なコードを提供するのではなく、不必要な詳細が省略された点を説明することでした。 –