Problemas con la sobrecarga de operadores!!!

Harkonnen
01 de Noviembre del 2004
Hola a todos!
Estoy intentado hacer un programilla en Visual C++ 6.0, y me da un error al intentar sobrecargar un operador con una
funcion amiga. Esta es la implementacion de la clase:

#include <ostream>

typedef int PTI;


class Tiempo
{
public:

inline Tiempo ();
Tiempo (int horas);
Tiempo (int horas, int minutos);
Tiempo (int horas, int minutos, int segundos);
Tiempo (const Tiempo &v);
~Tiempo ();
bool operator < (const Tiempo &v);
bool operator == (const Tiempo &v);
Tiempo operator + (const Tiempo &v);
Tiempo operator - (const Tiempo &v);
friend ostream& operator<< (ostream& os, const Tiempo &v);

private:
int horas, minutos, segundos;
PTI *elemento;


};


inline Tiempo::Tiempo (){
elemento=new PTI[2];
elemento[0]=elemento[1]=elemento[2]=horas=minutos=segundos=0;}

Y me da el siguiente error:

h:archivos de programamicrosoft visual studiomyprojectsparkingtiempo.h(31) : error C2143: syntax error : missing ';' before '&'
h:archivos de programamicrosoft visual studiomyprojectsparkingtiempo.h(31) : error C2433: 'ostream' : 'friend' not permitted on data declarations

Lo cual me deja perplejo, ya que creo que no falta ningun punto y coma por ningun sitio, y la declaracion he mirado en un monton de libros, internet, y esta calcadita. Cuando cambio la funcion friend en la clase y la declaro asi:
Tiempo operator << (const Tiempo &v)
compila perfectamente. aunque de esta forma no puedo utilizar la instruccion :
cout << park1 ; (Park1 es un objeto Tiempo)

Asi que si alguien me puede echar una mano le estaria eternamente agradecido ....