Может ли переменная ifstream быть глобальной переменной? - PullRequest
2 голосов
/ 12 ноября 2009
// 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]);
}

Есть ли причина, по которой file(argv[1]) выдаст ошибку? Могу ли я иметь ifstream в качестве глобальной переменной?

Ответы [ 2 ]

6 голосов
/ 12 ноября 2009

Вы пытаетесь вызвать оператор ifstream () (который не существует), когда вам следует использовать file.open(argv[1]).

Кроме того, нет ничего противозаконного в том, чтобы иметь глобальный ifstream.

2 голосов
/ 12 ноября 2009

Вы можете использовать ifstream в качестве глобальной переменной (является ли это хорошим стилем - это другой вопрос).

Кажется, проблема в том, что вы пытаетесь использовать конструктор: file(argv[1])

Глобальная переменная уже будет создана (с использованием конструктора по умолчанию) на этом этапе, и вместо этого вам нужно будет использовать метод open.

file.open( argv[1] );
...