一个 ifstream 变量可以是全局变量吗?

3
// 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
您正在尝试调用ifstream()运算符(该运算符不存在),而应该使用file.open(argv[1])。此外,拥有全局ifstream并没有任何不合法之处。

那很有道理。我没有意识到我正在使用构造函数。谢谢您的快速回复。 - Jeffrey Guenther
实际上,他正在调用不存在的 ifstream::operator() - rlbond

2
你可以将ifstream作为全局变量(这是否是良好的风格是另一个问题)。
问题似乎在于你试图使用构造函数:file(argv[1]) 此时全局变量已经通过默认构造函数构造,你需要使用open方法。
file.open( argv[1] );

是的,我意识到使用全局变量并不是最好的选择。但对于这个项目来说,它已经足够了。感谢您提供的额外解释。 - Jeffrey Guenther

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接