Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Error en sobrecarga de ++

Estas en el tema de Error en sobrecarga de ++ en el foro de C/C++ en Foros del Web. Hola, quiero sobrecargar el operador ++ para que incremente 1 a una fraccion pero me arroja el siguiente error: no 'operator++(int)' declared for postfix '++', ...
  #1 (permalink)  
Antiguo 12/10/2010, 17:15
 
Fecha de Ingreso: octubre-2010
Mensajes: 7
Antigüedad: 13 años, 6 meses
Puntos: 0
Exclamación Error en sobrecarga de ++

Hola, quiero sobrecargar el operador ++ para que incremente 1 a una fraccion pero me arroja el siguiente error: no 'operator++(int)' declared for postfix '++', trying prefix operator instead
O sea, me dice que debo colocar el ++ antes de la fraccion? Como debo modificar el codigo para que me permita hacerlo despues de dicha fraccion?? aca les dejo el codigo, muchas gracias!

#include <iostream>
#include <cstdlib>
using namespace std;
class fracciones{
int num,deno;
public:
void agrega(int a,int b){
num=a;
deno=b;
}
void salida(){
cout<<endl<<num<<"/"<<deno;
}
fracciones operator +(fracciones);
fracciones operator ++();
};
fracciones fracciones::operator++(){
fracciones temp;
temp.num=deno+num;
temp.deno=deno;
return temp;
}
fracciones fracciones::operator +(fracciones c){
fracciones temp;
temp.num=num*c.deno+c.num*deno;
temp.deno=deno*c.deno;
return temp;
}
int main(int argc, char *argv[]) {
int a,b,c,d;
fracciones fra1,fra2,fra3,fra4;
cin>>a>>b>>c>>d;
system("CLS");
fra1.agrega(a,b);
fra2.agrega(c,d);
fra3=fra1+fra2;
cout<<a<<"/"<<b<<" + "<<c<<"/"<<d<< " = ";
fra3.salida();
fra4.agrega(2,3);
fra4++;

return 0;
}
  #2 (permalink)  
Antiguo 12/10/2010, 20:16
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Error en sobrecarga de ++

la forma de solucionar tu problema es declarando como friend la sobrecarga del operador

Te recomiendo que le des una repasada a tus apuntes de sobrecarga de operadores y funciones amigas(friend)
  #3 (permalink)  
Antiguo 13/10/2010, 15:22
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 2 meses
Puntos: 22
Respuesta: Error en sobrecarga de ++

A diferencia de la versión "prefija" (++var) se utiliza un int como parámetro para indicarle al compilador que función llamar para la versión "posfija" (var++), el compilador se encarga de pasar un valor ficticio y obviamente es un parámetro que no tiene uso.

Declaraciones como funciones miembro:

Código C++:
Ver original
  1. const fracciones operator++(int); // postfix
  2. const fracciones& operator++(); // prefix

También puedes sobrecargar los operadores utilizando funciones globales como te ha comentado margarito.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:04.