- ある開発者の覚書 - ソフトウェア開発者が情報処理に関する雑多な話題をジャンルを問わずに書き留めています.未来の私、私と同類のgeekたちへ

2009-11-22

boost::shared_from_this の要求事項

boost::shared_from_thisを使用するときは

・そのインスタンスを指す少なくとも一つのboost::shared_ptrが存在する

ことが必要です。

class CMyClass : public boost::enable_shared_from_this<CMyClass>
{
public:
CMyClass(){}
~CMyClass(){}

void Method(){
boost::shared_ptr<CMyClass> selfPtr = shared_from_this();
}
};

int main(int argc, char* argv[])
{
boost::shared_ptr<CMyClass> myClassA = boost::shared_ptr<CMyClass>(new CMyClass());
myClassA->Method(); //OK

CMyClass *myClassB = new CMyClass();
myClassB->Method(); //NG
delete myClassB;

CMyClass myClassC;
myClassC.Method(); //NG

return 0;
}

0 件のコメント:

ブログ アーカイブ