[C con Clase] Sobrecarga

Alejandro alepelexo en yahoo.es
Mar Mar 13 16:02:59 CET 2007


OK, os muestro el código:

#include <iostream>
using namespace std;
int mayor(int a = 0, int b = 0);
int mayor(int a = 0, int b = 0, int c = 0);
int mayor(int a = 0, int b = 0, int c = 0, int d = 0);
int main() {
cout << mayor(10, 4) << endl;
cout << mayor(15, 35, 23) << endl;
cout << mayor(10, 12, 12, 18) << endl;
cin.get();
return 0;
}
int mayor(int a, int b) {
if(a > b) return a; else return b;
}
int mayor(int a, int b, int c) {
return mayor(mayor(a, b), c);
}
int mayor(int a, int b, int c, int d) {
return mayor(mayor(a, b), mayor(c, d));
}


Simplemente si os fijáis, es el ejemplo del curso sólo que con parámetros por defecto a 0.

El error es algo así:

In function `int main()':
      call of overloaded `mayor(int, int)' is ambiguous  
      candidates are: int mayor(int, int) 
                      int mayor(int, int, int) 
                      int mayor(int, int, int, int) 

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.

Muchas gracias y un saludo, Alejandro.

El pasado 2007-03-13 12:25:52, Rey escribió:
 
R> Hola, pero puedes enviarnos la construcción de la función que estás haciendo.
R> Rey.


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