Affectation de cout à un nom de variable

Dans la norme ANSI C++, comment puis-je affecter le flux de cout à un nom de variable? Ce que je veux faire, c'est que si l'utilisateur a spécifié un nom de fichier de sortie, j'envoie sortie de là, sinon, l'envoyer à l'écran. Donc quelque chose comme:

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;

J'ai essayé de faire cela comme une Macro-fonction:

#define OUTPUT outFileRequested?outFile:cout

OUTPUT << "whatever" << endl;

Mais cela m'a donné une erreur du compilateur.

Je suppose que je pourrais utiliser un if-then bloc pour chaque sortie, mais je voudrais éviter que si je le pouvais. Des idées?

source d'informationauteur user12576 | 2009-01-09