[C con Clase] Sobrecarga

Steven Davidson steven en conclase.net
Mar Mar 13 17:42:23 CET 2007


Hola Alejandro,

El pasado 2007-03-13 15:02:59, Alejandro escribió:

A> Simplemente si os fijáis, es el ejemplo del curso sólo que con parámetros por defecto a 0.
A> El error es algo así:
A> In function `int main()':
A>       call of overloaded `mayor(int, int)' is ambiguous  
A>       candidates are: int mayor(int, int) 
A>                       int mayor(int, int, int) 
A>                       int mayor(int, int, int, int) 
A> Y esto se me repite continuamente cada vez que aparece de alguna forma en el código la función. El enunciado del problema creo que lo estoy interpretando bien, ¿no? Ya que si pongo los valores a cero, el número que se retorne siempre va a ser el mayor.

Como ya hemos explicado, el problema es de ambigüedad. El compilador no puede decidir de entre las funciones sobrecargadas. Por ejemplo,

mayor( 10, 4 );

Puede referirse a cualquiera de las siguientes funciones:

int mayor( int, int )
int mayor( int, int, int )
int mayor( int, int, int, int )

Obviamente, el compilador se hace un lío y para poder resolver el problema, deja al programador - a ti - que lo solucione.


En cuanto al ejercicio, me temo que no es correcto. Lo que pide es que reescribas el programa usando una sola función con parámetros por defecto para que se comporte de la misma manera que el ejemplo en el curso de C++.


Espero haber aclarado el asunto.

Steven


Más información sobre la lista de distribución Cconclase