正しくない例 |
<CHogeWndクラス> class CHogeWnd : public CWnd{ public: ・・・ CHogeWnd(); virtual ~CHogeWnd(); BOOL Create(..略..); ・・・ private: ・・・ CHogeDraw m_pDraw; //何らかの情報をもっているクラス ・・・ }; CHogeWnd:CHogeWnd(){ ・・・ m_pDraw = NULL; ・・・ } CHogeWnd::~CHogeWnd(){ ・・・ delete m_pDraw; ・・・ } BOOL CHogeWnd::Create(..略..){ ・・・ m_pDraw = new CHogeDraw(); ・・・ } BOOL CHogeWnd::OnPaint(..略..){ ・・・ intnHoge = m_pDraw->GetHoge(); ・・・ } <CHogeMainWndクラス> class CHogeMainWnd : public CWnd{ public: ・・・ CHogeMainWnd(); virtual ~CHogeMainWnd(); BOOL Create(..略..); ・・・ private ・・・ CHogeWnd m_pHoge; ・・・ }; CHogeMainWnd:CHogeMainWnd(){ ・・・ m_pHoge = NULL; ・・・ } CHogeMainWnd::~CHogeMainWnd(){ ・・・ } BOOL CHogeMainWnd::Create(..略..){ ・・・ m_pHoge = new CHogeWnd(); m_pHoge->Create(...略...); ・・・ } BOOL CHogeMainWnd::OnClose(..略..){ delete m_pHoge; } |
正しい例 |
<CHogeWndクラス> class CHogeWnd : public CWnd{ public: ・・・ CHogeWnd(); virtual ~CHogeWnd(); BOOL Create(..略..); ・・・ private: ・・・ CHogeDraw m_pDraw; //何らかの情報をもっているクラス ・・・ }; CHogeWnd:CHogeWnd(){ ・・・ m_pDraw = NULL; ・・・ } CHogeWnd::~CHogeWnd(){ ・・・ DestroyWindow(); delete m_pDraw; ・・・ } BOOL CHogeWnd::Create(..略..){ ・・・ m_pDraw = new CHogeDraw(); ・・・ } BOOL CHogeWnd::OnPaint(..略..){ ・・・ intnHoge = m_pDraw->GetHoge(); ・・・ } <CHogeMainWndクラス> class CHogeMainWnd : public CWnd{ public: ・・・ CHogeMainWnd(); virtual ~CHogeMainWnd(); BOOL Create(..略..); ・・・ private ・・・ CHogeWnd m_pHoge; ・・・ }; CHogeMainWnd:CHogeMainWnd(){ ・・・ m_pHoge = NULL; ・・・ } CHogeMainWnd::~CHogeMainWnd(){ ・・・ } BOOL CHogeMainWnd::Create(..略..){ ・・・ m_pHoge = new CHogeWnd(); m_pHoge->Create(...略...); ・・・ } BOOL CHogeMainWnd::OnClose(..略..){ delete m_pHoge; } |