ANSI C++ では、cout ストリームを変数名に割り当てるにはどうすればよいですか? 私がやりたいことは、ユーザーが出力ファイル名を指定した場合はそこに出力を送信し、そうでない場合は画面に送信することです。次のようなものです:
ofstream outFile;
if (outFileRequested)
outFile.open("foo.txt", ios::out);
else
outFile = cout; // Will not compile because outFile does not have an
// assignment operator
outFile << "whatever" << endl;
これをマクロ関数としても試しました:
#define OUTPUT outFileRequested?outFile:cout
OUTPUT << "whatever" << endl;
しかし、それによってコンパイルエラーも発生しました。
すべての出力に IF-THEN ブロックを使用できると思っていましたが、できればそれは避けたいと思います。何か案は?