读书人

为何不能使用 auto_ptr ?该怎么解决

发布时间: 2012-01-14 20:02:35 作者: rapoo

为何不能使用 auto_ptr ?
/* 方案1 用的是auto_ptr ,为什么窗口闪一下就没有了? 请高手指点!
#include <afxwin.h>
#include <memory>

class CMyFrameWnd : public CFrameWnd
{
public:
CMyFrameWnd(void) {}
};

class CMyWinApp : public CWinApp
{
public:
BOOL InitInstance(void);
};

//#define USE_AUTO_PTR // 去掉此处注释,则运行方案1,否则运行方案2

#ifdef USE_AUTO_PTR // 方案1, 使用auto_prt
BOOL CMyWinApp::InitInstance(void)
{
std::auto_ptr <CMyFrameWnd> pFrame(new CMyFrameWnd);
pFrame-> Create(0, _T( "热烈欢迎! "));
pFrame-> ShowWindow(1);
pFrame-> UpdateWindow();
this-> m_pMainWnd = pFrame.get();
return TRUE;
}
#else // 方案2, 不使用auto_ptr
BOOL CMyWinApp::InitInstance(void)
{
CMyFrameWnd *pFrame = new CMyFrameWnd;
pFrame-> Create(0, _T( "热烈欢迎! "));
pFrame-> ShowWindow(1);
pFrame-> UpdateWindow();
this-> m_pMainWnd = pFrame;
return TRUE;
}
#endif

CMyWinApp myApp;

[解决办法]
pFrame自动释放了。

读书人网 >VC/MFC

热点推荐