В ANSI С++, как я могу назначить поток 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 для каждого выхода, но я хотел бы избежать этого, если бы мог. Есть идеи?