在同一对象的成员之间传递 ifstream 变量,C++
Passing an ifstream variable between members of the same object, C++
目标: 使用 class 变量,使得对象成员中声明的 ifstream 可以被同一对象的后续成员使用,而无需使用函数头参数传递。
问题:创建的对象测试的本地 ifstream 未在该对象的第二个成员中重新使用。我一定是设置错了,我该如何解决?
类 和文件现在对我来说就像是在爬一座山,但我什至找不到第一个立足点——让该死的变量起作用!我在网上看了太久,但所有的例子都很复杂,我只想做一些基本的工作来开始修补。我敢肯定我错过了一些非常简单的事情,真的很令人沮丧 >:[
main.cpp
#include "file.h
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
file test;
test.file_pass();
return 0;
}
file.h
#ifndef FILE_H
#define FILE_H
#include <fstream>
#include <iostream>
using namespace std;
class file
{
public:
file();
void file_pass();
//private:
ifstream stream;
};
#endif
file.cpp
#include "file.h"
//**********************************
//This will read the file.
file::file()
{
ifstream stream("Word Test.txt");
}
//**********************************
//This will output the file.
void file::file_pass()
{
//ifstream stream("Word Test.txt"); //if line activated, program works fine of course.
string line;
while(getline(stream, line))
cout << line << endl;
}
您在这里创建了一个与 class 成员同名的新局部变量:
file::file()
{
ifstream stream("Word Test.txt");
}
相反,您可以使用它来初始化构造函数中的 class 成员:
file::file() : stream("Word Test.txt")
{
}
目标: 使用 class 变量,使得对象成员中声明的 ifstream 可以被同一对象的后续成员使用,而无需使用函数头参数传递。
问题:创建的对象测试的本地 ifstream 未在该对象的第二个成员中重新使用。我一定是设置错了,我该如何解决?
类 和文件现在对我来说就像是在爬一座山,但我什至找不到第一个立足点——让该死的变量起作用!我在网上看了太久,但所有的例子都很复杂,我只想做一些基本的工作来开始修补。我敢肯定我错过了一些非常简单的事情,真的很令人沮丧 >:[
main.cpp
#include "file.h
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
file test;
test.file_pass();
return 0;
}
file.h
#ifndef FILE_H
#define FILE_H
#include <fstream>
#include <iostream>
using namespace std;
class file
{
public:
file();
void file_pass();
//private:
ifstream stream;
};
#endif
file.cpp
#include "file.h"
//**********************************
//This will read the file.
file::file()
{
ifstream stream("Word Test.txt");
}
//**********************************
//This will output the file.
void file::file_pass()
{
//ifstream stream("Word Test.txt"); //if line activated, program works fine of course.
string line;
while(getline(stream, line))
cout << line << endl;
}
您在这里创建了一个与 class 成员同名的新局部变量:
file::file()
{
ifstream stream("Word Test.txt");
}
相反,您可以使用它来初始化构造函数中的 class 成员:
file::file() : stream("Word Test.txt")
{
}