gpt4 book ai didi

c++ - ifstream 在一个类中

转载 作者:行者123 更新时间:2023-11-28 07:55:06 26 4
gpt4 key购买 nike

我不明白这是怎么回事。我有这样的代码:

#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");
}

关于c++ - ifstream 在一个类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12858114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com