質問

私は、実行時にプログラムに渡されたパラメータに応じて、どちらかではifstreamまたはCINから読み取るプログラムを作成する必要があります。

私は次のことを行う上で計画していた。

 istream in;

 if(argv[1] == "cin")
 {
      in = cin;
 }
 else
 {
      ifStream inFile;
      inFile.open(argv[1].c_str());
      in = inFile;
 }

ただし、保護された、と私はではistreamを宣言することができないではistreamはストリーム内で、このようなジェネリックを宣言するための方法はありますか?

役に立ちましたか?

解決

の代わりにistream*で試してみてください。あなたは少し自分のコードを変更する必要があること、しかし、注意してください。ポインタを使用すると、あなたが指しているオブジェクトのメモリ領域を維持する必要があります。それは他の外に存在しないので、他の言葉で、「INFILE」変数は、そこに宣言することはできません。コードは、可能性があります:

 istream* in;
 ifStream inFile;

 if(!strcmp(argv[1],"cin"))
 {
      in = &cin;
 }
 else
 {
      inFile.open(argv[1]);
      in = &inFile;
 }
 // use *in

(注意も取り扱いストリングに変更。私は、例として、それらを改変した。)

scroll top