Visual Studio 2022中MFC代码触发Error C2280错误的解决求助
解决CFile编译错误C2280的方案
错误原因
CFile类的拷贝构造函数CFile(const CFile&)被显式删除了——MFC设计这类资源管理类时,禁止对象拷贝,避免资源重复释放或管理混乱。你写的CFile testFile = CFile(_T("TEST STRING"), CFile::modeCreate);属于拷贝初始化,编译器会尝试调用拷贝构造函数,因此触发C2280错误。
修复方法
方法1:使用直接初始化(推荐)
去掉等号,直接调用构造函数初始化对象:
CFile testFile(_T("TEST STRING"), CFile::modeCreate);
这是MFC中创建CFile对象的标准写法,不会触发拷贝构造调用。
额外注意事项
- 确保文件名
_T("TEST STRING")是合法路径,仅写文件名会在当前进程工作目录创建文件; CFile构造失败时会抛出CFileException异常,建议用try-catch块捕获处理:
try { CFile testFile(_T("TEST STRING"), CFile::modeCreate); // 后续文件操作 } catch (CFileException* e) { // 处理异常,比如输出错误信息 TCHAR szErr[1024]; e->GetErrorMessage(szErr, 1024); AfxMessageBox(szErr); e->Delete(); }
内容的提问来源于stack exchange,提问作者Salvatore Ansani
相关产品推荐
相关产品推荐

