[英]Ifstream inside a class
我不明白发生了什么。 我有这样的代码:
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char *argv[])
{
ifstream infile;
infile.open("test.txt");
if(!infile) return 1;
infile.close();
return 0;
}
一切正常。 名为“ text.txt”的文件不存在。 该应用程序返回1。但是,当我将相同的代码放入类中时,它将以其他方式起作用。 这是声明:
#pragma once
#include <iostream>
#include <fstream>
using namespace std;
class Record
{
public:
Record(char *filename);
public:
~Record(void);
private:
ifstream infile;
}
和构造函数:
Record::Record(char *filename)
{
infile.open(filename);
if(!infile.is_open()) return;
}
看来方法“ is_open”不起作用。 我做错了什么?
确实有效。 你在期待什么? 您从构造函数返回,因此构造函数将退出,将创建对象(具有无效成员),并继续执行。
您可以改为引发异常来通知无效对象:
Record::Record(char *filename)
{
infile.open(filename);
if(!infile.is_open())
throw std::exception("file not found");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.