Ifstream inside a class
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");
}
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- "Undefined class"作为is_base_of的论据
- 如何将class.cpp和class.hpp编译为一个.o文件
- Klocwork Inside的资源泄漏
- '{'标记之前的预期类名,然后在预声明时无效使用不完整的类型'class class_name'
- 如何使用"derived input class"创建派生类?
- 错误:"Left of getValue must have class/struct/union"
- ' class a : b ' 和 ' class a : public b ' 之间的继承类不同
- Pybind11 Class Definition
- 在C++中使用没有合作伙伴Class/Cpp文件的头文件是否实用
- C2011 'CMemDC':Visual Studio 2019中的'class'类型重新定义
- TypeError: [c++ addon class] 不是构造函数
- C++ class template
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- Clearing Class Foo with new(pFoo) Foo()
- C++ class vs a library
- Ifstream inside a class
- Typedefs inside a class