【发布时间】:2017-02-12 23:10:03
【问题描述】:
我正在尝试使用类成员初始化程序的 C++11 特性来初始化类的变量。我拥有的类变量是 std::string 和 std::ifstream。
class A{
std::string filename = "f1.txt";
std::ifstream filestream = ....
public:
....
};
有什么方法可以初始化文件流并同时使用类成员初始化检查错误。
我想做的是,类似于以下内容:
class A{
std::string filename = "f1.txt";
std::ifstream filestream(filename);
if(filestream.is_open()) .... // check if file cannot be opened
public:
....
};
【问题讨论】:
-
嗯,不。如果文件无法打开,你想做什么?您可以在构造函数中检查它,并可能引发异常?但我认为这是不好的做法。
-
@Rakete1111 这也是我的想法.. 我只是想确定我是否做对了.. 所以你建议我在构造函数中进行 ifstream 初始化?
-
是的,但我自己也不知道:/对不起。
-
这是一种不好的做法。正如 Rakete1111 所说,从构造函数中检查并初始化成员变量。