SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: Interloper en Lunes 2 de Agosto de 2004, 15:44
-
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!
-
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!!!!
-
¿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?
-
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;