- C++相談室 part113
443 :デフォルトの名無しさん[sage]:2014/07/08(火) 11:28:54.54 ID:VtPt2aKV - shared_ptr使って親と子を結びつける時にどうしたらいいかわからないです。
#include <stdio.h> #include <memory> #include <set> class IParent; class IChild { std::shared_ptr< IParent > m_parent; protected: public: IChild() { puts( "IChild" ); } public: virtual void draw() { puts( "child" ); } virtual ~IChild() { puts( "~IChild" ); } friend class IParent; }; class IParent { std::set< std::weak_ptr< IChild > > m_childs; public: void add( std::shared_ptr< IChild > child ) { // child.m_parent = shared_ptr<IParent>(this)? // ←これダメな気がする m_childs.insert( child ); } }; int main(int argc, _TCHAR* argv[]) { std::shared_ptr< IParent > parent = std::shared_ptr< IParent >( new IParent ); parent->add( std::shared_ptr< IChild >( new IChild() ) ); return 0; } 親子関連のお手本とかありますか?
|