【发布时间】:2013-01-21 01:11:36
【问题描述】:
例子:
//头文件
class Example
{
private:
fstream InputObject;
public:
Example();
}
//实现文件
Example::Example():InputObject("file_name.txt", ios::in) {}
从我迄今为止从类似问题中读到的内容来看,在“旧”版本的 C++ 中,初始化类中的 fstream 对象的唯一方法是通过上面显示的成员列表初始化来实现。
问题:
如果这确实是在类中初始化 fstream 对象的“唯一”方式,那么如果文件无法打开,我们该怎么办?
通常我会通过检查运行 fstream 对象以确保它正确打开,但在这种情况下这似乎是不可能的。另外,即使我可以,如果第一次失败,我怎么能重新初始化对象?
【问题讨论】:
-
如果您想再试一次,只需在正文中运行检查并使用
.open()。 -
fstream对象有一个open()成员函数... -
在 C++11 中添加的唯一内容(除了所有其他内容)是您现在可以直接将
std::string参数用于fstream... -
@KerrekSB,我将其解释为类内成员初始化,尽管它没有修复检查或任何问题。
-
所以我不能用.open“初始化”函数,但我可以尝试在构造函数的主体中使用.open“重新打开”它?
标签: c++ class exception-handling initialization fstream