Problemas con la sobrecarga de operadores!!!
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 ....
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 ....
