Hey, I'm a bit rusty at c++ and I'm sure that I'm just missing something stupid, but I have a class that takes in an ifstream object in its constructor. In my main function I create an ifstream, open a file, then pass the ifstream object by reference into the class constructor. When I try to use the stream inside the constructor the is_open() method returns false and I can't read data from the file. Is it possible to pass an ifstream this way and have the file remain open so I can read from it, or would i be better off just passing the filename and creating/opening a stream inside the object.
thanks!
main function:
#include <fstream>
#include "headerFile.h"
using namespace std;
int main()
{
ifstream Ideas;
ifstream Hints;
Ideas.open("Ideas.txt");
Hints.open("Hints.txt");
DataOne d1(Ideas, Hints);
return 0;
}
DataOne class:
#include "headerFile.h"
#include <iostream>
#include <vector>
using namespace std;
DataOne::DataOne()
{
}
DataOne::DataOne(ifstream &ideas, ifstream &hints)
{
//make sure both streams have open files
if(!(ideas.is_open()))
{
cout << "IsOPen: " << ideas.is_open();
cout << "Error: ideas ifstream- No file open!" << endl;
}
else if(!(hints.is_open()))
{
cout << "Error: hints ifstream- No file open!" << endl;
}
else
{
//read from files
}
}