3 votes

Une variable ifstream peut-elle être une variable globale ?

// 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]);
}

Y a-t-il une raison pour laquelle file(argv[1]) donnerait une erreur ? Puis-je avoir un ifstream comme variable globale ?

6voto

Mark Rushakoff Points 97350

Vous essayez d'appeler le ifstream 's () (qui n'existe pas), alors que vous devriez utiliser l'opérateur file.open(argv[1]) .

En plus de cela, il n'y a rien d'illégal à avoir un global ifstream .

2voto

Alex Deem Points 3494

Vous pouvez avoir le ifstream comme une variable globale (si c'est un bon style est une question différente).

Le problème semble être que vous essayez d'utiliser le constructeur : file(argv[1])

La variable globale serait déjà construite (à l'aide du constructeur par défaut) à ce moment-là, et vous devrez plutôt utiliser la fonction open méthode.

file.open( argv[1] );

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X