下面是c++,点击button1建立一个打开文件对话框的代码。
voidCcalDlg::OnBnClickedButton1(){CFileDialogfileDlg(TRUE);fileDlg.m_ofn.lpstrTitle=_...
void CcalDlg::OnBnClickedButton1()
{
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle=_T("选择要计算的文件");
fileDlg.m_ofn.lpstrFilter=_T("Text Files(*.txt)*.txt");
if( IDOK ==fileDlg.DoModal())
{
CFile file( fileDlg.GetPathName(), CFile::modeRead);
my_file=file;
}
}
my_file是CcalDlg的成员变量。
my_file=file这句编译会报错“CObject::operator =”: 无法访问 private 成员(在“CObject”类中声明)。“请问这是为什么。还有我目的就是把打开的文件保存在my_file这个变量中,怎么给my_file赋值呢? 展开
{
CFileDialog fileDlg(TRUE);
fileDlg.m_ofn.lpstrTitle=_T("选择要计算的文件");
fileDlg.m_ofn.lpstrFilter=_T("Text Files(*.txt)*.txt");
if( IDOK ==fileDlg.DoModal())
{
CFile file( fileDlg.GetPathName(), CFile::modeRead);
my_file=file;
}
}
my_file是CcalDlg的成员变量。
my_file=file这句编译会报错“CObject::operator =”: 无法访问 private 成员(在“CObject”类中声明)。“请问这是为什么。还有我目的就是把打开的文件保存在my_file这个变量中,怎么给my_file赋值呢? 展开
2个回答
展开全部
请使用指针
否则出了大括号, file对象自动析构,也就失效了,一般析构时,肯定自动关闭已经打开的文件句柄
也就是文件已经关闭了
析构了的对象,失效了的对象,关闭了文件句柄,即使被你=赋值到my_file中了,但是系统只认句柄的,句柄说白了就是一个数值一个指针值,这个文件句柄关闭了就是关闭了,即使你在关闭之前复制了这个句柄
m_pFile = new CFile(fileDlg.GetPathName(), CFile::modeRead);
在你自己的类析构的时候,记得delete m_pFile;
报错“CObject::operator =” 就是不让你使用=号赋值号,因为不支持这个,因为复制也没用,所以把=号设为非公开,隐藏起来,不让你用
否则出了大括号, file对象自动析构,也就失效了,一般析构时,肯定自动关闭已经打开的文件句柄
也就是文件已经关闭了
析构了的对象,失效了的对象,关闭了文件句柄,即使被你=赋值到my_file中了,但是系统只认句柄的,句柄说白了就是一个数值一个指针值,这个文件句柄关闭了就是关闭了,即使你在关闭之前复制了这个句柄
m_pFile = new CFile(fileDlg.GetPathName(), CFile::modeRead);
在你自己的类析构的时候,记得delete m_pFile;
报错“CObject::operator =” 就是不让你使用=号赋值号,因为不支持这个,因为复制也没用,所以把=号设为非公开,隐藏起来,不让你用
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询