请问异常处理中怎样抛出一个ifstream对象

AlwaysSLH AlwaysSLH 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
编程中遇到一个问题,如下一段程序中,filename已定义为string变量,
try
{
ifstream infile( filename.c_str() , ios::in| ios::binary );
if( !infile )
throw infile;
infile.read( (char *) ( &size ) , sizeof( size ) );
infile.read( (char *) ( list ) , sizeof( elemType ) * size );
infile.close();
}
catch( ifstream )
{
cerr<<"InformationDataFile.dat 文件打开失败 !"<<endl;
_getch();
exit( 0 );
}
编译时总是通不过,错误如下:
I:\Microsoft Visual Studio 8\VC\include\fstream(675) : error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
I:\Microsoft Visual Studio 8\VC\include\ios(151) : see declaration of 'std::basic_ios<_Elem,_Traits>::basic_ios'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
This diagnostic occurred in the compiler generated function 'std::basic_ifstream<_Elem,_Traits>::basic_ifstream(const std::basic_ifstream<_Elem,_Traits> &)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
I:\Microsoft Visual Studio 8\VC\include\istream(842) : error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
I:\Microsoft Visual Studio 8\VC\include\ios(151) : see declaration of 'std::basic_ios<_Elem,_Traits>::basic_ios'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
This diagnostic occurred in the compiler generated function 'std::basic_istream<_Elem,_Traits>::basic_istream(const std::basic_istream<_Elem,_Traits> &)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
后来发现是 throw infile; 这句的问题,把它去掉就好了,那请问各位高手异常处理中怎样抛出一个ifstream类的对象呢?还是个抛出它的一个什么成员呢?
...全文

相关推荐

std::ifstream详解[代码]

std::ifstream是C++标准库中用于从文件读取数据的类,属于std::fstream的特化版本。本文详细介绍了其使用方法,包括头文件包含、定义与初始化(默认构造函数和直接构造函数)、文件打开与检查(is_open方法)、多种读取方式(逐行、逐字符、读取到字符串)、文件关闭及完整示例代码。同时强调了文件路径、权限、编码及异常处理等注意事项,为C++文件操作提供了全面指导。

gin88

C++异常处理实战:从被动捕获到主动抛出的设计策略与最佳实践

异常处理是编程语言中用于管理运行时错误的核心机制,其原理在于通过非局部跳转将错误信息从检测点传递到处理点,从而分离正常逻辑与错误处理代码。这一机制的技术价值在于提升代码的健壮性、清晰度和可维护性,是现代软件工程中构建可靠系统的重要基石。在C++等系统级语言的应用场景中,异常处理尤为关键,它不仅是处理标准库错误的工具,更是设计高质量API、实现资源安全管理和保障事务性操作的核心手段。本文聚焦于**主动抛出异常**这一高级主题,深入探讨了如何通过精准使用`throw`关键字、设计自定义异常类以及遵循异常安全保证

weixin_30512089

C++嵌套的异常处理

try catch finally 的多层嵌套。 catch的多重嵌套 简单例子

苏子轩2015

C++编程测试题,考察范围:面向对象特性与函数重载机制:基于类继承和多态的代码优化与异常处理技术解析

C++编程测试题,考察范围:面向对象特性与函数重载机制:基于类继承和多态的代码优化与异常处理技术解析

程序员烟花

VC++实现打开一个文本文件并显示出来

对新手很有帮助的吧!大大家会喜欢的,5555,加分啊 !

cskisschenbo
评论 6
收藏 已收藏
分享
返回顶部
AlwaysSLH
C++ 语言 65,214 成员 250,514 内容