Jeffrey Guenther
Jeffrey Guenther

Reputation: 901

Can an ifstream variable be a global variable?

// stream from file.
ifstream file;

int main (int argc, char * argv[]) {

// get argument passed from command line
// This is file name
if (argc != 2 ) {
    cout << "use:  ./executable <filename>";

}else {
    //cout << "You are using filename: " << argv[1];

    // start the file stream
    file (argv[1]);
}

Is there any reason why file(argv[1]) would be giving an error? Can I have a ifstream as a global variable?

Upvotes: 3

Views: 6212

Answers (2)

Mark Rushakoff
Mark Rushakoff

Reputation: 258358

You're trying to call the ifstream's () operator (which doesn't exist), when you should be using file.open(argv[1]).

Besides that, there's nothing illegal about having a global ifstream.

Upvotes: 6

Alex Deem
Alex Deem

Reputation: 4805

You can have the ifstream as a global variable (whether this is good style is a different question).

The problem seems to be that you're attempting to use the constructor: file(argv[1])

The global variable would already be constructed (using the default constructor) at this point, and you will instead need to use the open method.

file.open( argv[1] );

Upvotes: 2

Related Questions