メンバ ポインタを shared_ptr として作成したいのですが、含まれているクラスが破棄された後、shared_ptr 自体が生きているかどうかはわかりません。以下のコードをテストしましたが、実行時に正しく適合するかどうかわかりません。
using std::cout;
using std::cin;
using std::endl;
class Widget
{
public:
Widget()
{
cout<<__FUNCTION__<<"()"<<endl;
}
~Widget()
{
cout<<__FUNCTION__<<"()"<<endl;
}
void display()
{
cout<<"the smart pointers are really smart"<<endl;
}
private:
};
class Window
{
public:
Window()
:widget_(new Widget())
{
}
Widget* widget()
{
return widget_.get();
}
private:
std::shared_ptr<Widget> widget_;
};
int main()
{
Widget* outer = nullptr;
{
Window wind;
outer = wind.widget();
}
outer->display();
cout<<"enter"<<endl;
cin.get();
return 0;
}
`