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 を使用できますか?

4

2 に答える 2

6

を使用する必要があるときに、(存在しない)ifstreamの演算子を呼び出そうとしています。()file.open(argv[1])

それ以外に、 global を持つことについて違法なことは何もありませんifstream

于 2009-11-12T02:37:11.823 に答える
2

ifstream をグローバル変数として持つことができます (これが良いスタイルかどうかは別の問題です)。

問題は、コンストラクターを使用しようとしているようです:file(argv[1])

グローバル変数は、この時点で (デフォルトのコンストラクターを使用して) 既に構築されているため、代わりにopenメソッドを使用する必要があります。

file.open( argv[1] );
于 2009-11-12T02:37:23.493 に答える