• Jueves 14 de Noviembre de 2024, 18:49

Autor Tema:  ¿es Posible Declarar Funciones En Modo Infijo?  (Leído 1572 veces)

Interloper

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
¿es Posible Declarar Funciones En Modo Infijo?
« en: Lunes 2 de Agosto de 2004, 15:44 »
0
Buenas!

Soy un estudiante de informática, y me gustaría saber si existe alguna manera de declarar funciones y métodos de forma infija (por ejemplo, funciones del tipo >= ), ya que me serían de gran utilidad a la hora de trabajar con TADS, estructuras de datos y templates.

La idea sería poder sobrecargar las funciones de comparación (menor, menor o igual,. mayor, mayor o igual), a fin de poder utilizar facilmente estructuras implementadas mediante templates, y que el funcionamiento fuese el deseado.

He estado mirando en unos cuantos libros, y no he encontrado nada, y debido a las fechas, me resulta imposible contactar con cualquier profesor de mi facultad que me resuelva la duda... y la idea sería disponer de la respuesta para poder trabajar con ello durante este mes.

Un saludo, y muchas gracias!

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: ¿es Posible Declarar Funciones En Modo Infijo?
« Respuesta #1 en: Lunes 2 de Agosto de 2004, 19:19 »
0
Hola!!!!!!!!!!!!!

Si vos queres hacer funciones que representen a un operador, podes hacerlo sin problema pero no con el nombre ">=" ó "=" o lo q sea.
Si vos queres hacer eso, deberas sobrecargar esos operadores, pero solo se hace en clases. Si vos haces un template, podes sobrecargar el operador q sea (salvo el *, el -> y algun otro no sobrecargable) y de esa manera habras solucionado lo q querias

Salu2!!!!

Interloper

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: ¿es Posible Declarar Funciones En Modo Infijo?
« Respuesta #2 en: Martes 3 de Agosto de 2004, 19:11 »
0
¿Pero puedo declarar funciones de manera que un argumento vaya antes del nombre de la función y otro despues? Si es así... ¿Como se hace?

Noel Solw

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
Re: ¿es Posible Declarar Funciones En Modo Infijo?
« Respuesta #3 en: Miércoles 4 de Agosto de 2004, 09:16 »
0
A continuacion un ejemplo de funcion "infija" :

class Complex
{
   private:

      float real,
            imag;
   public:
      Complex(float,float);
      Complex(const Complex &);
      ~Complex();
      Complex operator=(const Complex);
      Complex operator+(const Complex) const;
      Complex operator-(const Complex) const;
      Complex operator*(const Complex) const;
      Complex operator/(const Complex) const;
      friend ostream &operator<<(ostream &,const Complex &);
};   // COMPLEX

Complex Complex::operator+(const Complex right) const
{
   Complex ret;                    // *this + right
   ret.real = real + right.real;
   ret.imag = imag + right.imag;
   return ret;
}   // OPERATOR COMPLEX + COMPLEX


aplicacion:

Complex a,b,c;

c = a + b;

cout << c << endl;