为什么同一段C++程序里面,第一个函数的“=”没有问题,第二个却存在二义性呢?

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:49:36
void CFindandreplaceDlg::OnButton1()
{
dlg = new CFindReplaceDialog;
dlg->Create(TRUE,NULL);
dlg->ShowWindow(SW_SHOW);
find = TRUE;
}
这段程序编译正常,下面一段
void CFindandreplaceDlg::OnButton2()
{
dlg = new CFindReplaceDialog;
dlg->Create(FALSE,NULL);
dlg->ShowWindow(SW_SHOW);
find = FALSE;
}
编译时有这样的错误提示 error C2593: 'operator =' is ambiguous
不好意思,没说清楚,是find=FALSE的等号有二义性,把find的类型换了一下正确了,但是编译连接都没有问题,运行时却没有反应,什么东西都出不来!

如果 dig是全局变量或是成员变量的话,

由于第一个函数结束时没有释放内存

第二个函数运行时 , dig 申请了新的地址 ,导致错误

建议换个变量 或是 即使释放内存

没遇到过这样的问题啊,要不你把完整的代码贴出来看看
===============

是不是一个dlg不能new 2次的?
你重新定义一个变量试试

dlg = new CFindReplaceDialog;
创建一个新类的实例应该是,注意后面的括号:
dlg = new CFindReplaceDialog();

难不成是中文英文输入法的问题?不应该啊。。。。