ifstream変数はグローバル変数をすることができますか?
質問
// 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を持つことができますか?
解決
あなたが使用する必要があるとき、(存在しない)ifstream
の()
のオペレータに電話をしようとしている<のhref =「http://www.cplusplus.com/reference/iostream/ifstream/open/」 rel = "nofollowをnoreferrer"> file.open(argv[1])
でます。
それに加えて、グローバルifstream
を持っていることについて違法何もない。
他のヒント
あなたは(これで良いスタイルは、別の質問であるかどうか)は、グローバル変数としてはifstreamを持つことができます。
問題は、コンストラクタを使用しようとしているということのようだ:file(argv[1])
グローバル変数は既にこの時点で、(デフォルトのコンストラクタを使用して)構築されるだろう、とあなたが代わりにopen
メソッドを使用する必要があります。
file.open( argv[1] );
所属していません StackOverflow