problema con sobrecarga de operadores c++

Iniciado por swagger14, 3 Abril 2012, 05:37 AM

0 Miembros y 1 Visitante están viendo este tema.

swagger14

intento hacer una sobrecarga de operadores  en una clase de quebrados y estoy
hastacado!  ayudenme!!#include <iostream>

using namespace std;

class Complejos
{
  private:
          double real;
          double img;
  public:
         Complejos(double, double);
         Complejos operator+(Complejos a);
         friend Complejos operator*(Complejos a, double ); //AMIGA porque utiliza un tipo de dato diferente de la clase en los operandos
         friend Complejos operator*(double, Complejos); //AMIGA porque utiliza un tipo de dato diferente de la clase en los operandos
         void Suma(double,double);
         void Multiplicacion(double, double);
         void VerComplejos();
         friend Complejos operator+(Complejos, int);
};
Complejos operator+(Complejos a, int b)
{
  Complejos c(a.real*b, a.img*b);
  return c;
}

Complejos::Complejos(double r, double i)
{
    real = r;
    img  = i;
}
void Complejos::Multiplicacion(double r, double i)
{
     double hold = real;
     real = (real * r) + (img * i * (-1));
     img  = -(hold * i ) + (img * r);   
}

void Complejos::Suma(double r, double i)
{
     real += r;
     img  += i;
}
void Complejos::VerComplejos()
{
     cout << "(" << real << ", " << img << "i)\n";
}
Complejos operator*(double valor, Complejos b)
{
          Complejos tmp ( b.real*valor, b.img*valor);
          return tmp;
}
Complejos Complejos::operator+(Complejos a)
{
          Complejos c( real+a.real, img+a.img);
          return c;
}
Complejos operator*(Complejos a, double valor)
{
          Complejos c( a.real*valor, a.img*valor);
          return c;
}



int main()
{
    Complejos c(5,15), d(10,10);
    Complejos ch(1,1);

    ch = ch + d;
    ch.VerComplejos();
   
    ch = ch * 2;
    ch.VerComplejos();
   
    ch = 2 * ch ;
    ch.VerComplejos();
   
    system("pause");
}