为什么ASSERT(m_pFindDialog == NULL);运行时会报错??
dingd 2002-12-05 04:08:55 在一个菜单的消息函数中有:
ASSERT(m_pFindDialog == NULL);
m_pFindDialog = new CFindReplaceDialog();
m_pFindDialog->Create(TRUE, "Initial Text", NULL, FR_DOWN, this);
可以一点菜单就报错,说的就是:
ASSERT(m_pFindDialog == NULL);
这行的意思不就是为了让m_pFindDialog的对象唯一吗,好让我产生的FindReplace对话框唯一吗?这有什么不对的,运行后为什么要报错呢。
好像MSDN里关于这个也是这样写的呀?
如果我将其关闭 : //只是
m_pFindDialog = new CFindReplaceDialog();
m_pFindDialog->Create(TRUE, "Initial Text", NULL, FR_DOWN, this);
点菜单,不会报错,会弹出FindReplace对话框。
但是问题是:再点一次菜单,又出现一个,这就不唯一了!。
这难道和我的变量:
m_pFindDialog 的定义有什么关系吗。 -------我的初步估计。
我只是在这个类定义中
CFindReplaceDialog* m_pFindDialog;
没有在构造函数中:CFindReplaceDialog m_pFindDialog =
new FindReplaceDialog();
这应该对着呢呀?
因为,ASSERT(m_pFindDialog == NULL);的后面,才是
m_pFindDialog = new CFindReplaceDialog();
--------------------------------------
以上到底是怎么回事呀?