Tienes que hacerlo tal como te comentó Fw190 sobrecargando el objeto en una nueva clase o bien reasignando la salida tal como harias en C; te comento la forma facil que consiste en reasignar la salida:
Código:
//abres un puntero al archivo
ofstream archivo("salida.txt");
//guardas una referencia del stdout, esto es opcional
streambuf *cpp_stdout = std::cout.rdbuf();
//reasignas el stream de salida
cout.rdbuf(archivo.rdbuf());
//te diviertes un rato
cout << "era mas facil de lo que pensaba";
//y restauras el stdout original que guardaste anteriormente, esto es opcional
cout.rdbuf(cpp_stdout);
Puedes hacer lo mismo con una clase sobrecargando el operador, pero eso normalmente se reserva para trabajar tipos de datos no sobrecargados por defecto por cout.
Saludos
vosk