llamar a una función sobrecargada al llamar a la plantilla
Frecuentes
Visto 47 veces
0
Estoy llamando a una plantilla para encontrar un mínimo de dos valores. El código es:
#include<iostream>
#include <cstdlib>
using namespace std;
template<class T>
T min(T a,T b)
{
return (a<b)?a:b;
}
int main(int argc, char** argv) {
int d,y;
std::cout<<"enter two integer values";
std::cin>>d>>y;
cout<<"you entered"<<d<<y;
std::cout<<"the minimum of the two is "<<min(d,y);
float p,q;
std::cout<<"enter float values";
std::cin>>p>>q;
cout<<"you entered"<<p<<q;
std::cout<<"the minimum of the float values is "<<min(p,q);
char w,a;
std::cout<<"enter the two characters";
std::cin>>w>>a;
cout<<"you entered"<<w<<a;
std::cout<<"the minimum of the two characters is "<<min(w,a);
return 0;
}
Dice que la llamada a una función sobrecargada es ambigua
3 Respuestas
1
Elimine
using namespace std;
porque hay otra función min() en std.
Respondido el 21 de Septiembre de 13 a las 12:09
1
Obtiene el error porque hay una función estándar llamada std::min
definido en el espacio de nombres std
, que su programa permitió que el compilador usara sin una referencia explícita.
Elimine
using namespace std;
y añade std::
calificador para cout
donde falta para solucionar este problema.
Respondido el 21 de Septiembre de 13 a las 12:09
0
Utilice las ::min(d,y)
para indicar que hace referencia a la función en el espacio de nombres global.
Respondido el 21 de Septiembre de 13 a las 12:09
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c++ templates ambiguous or haz tu propia pregunta.
sabes que hay std::min? - billz
Más específicamente,
template< class T > const T& std::min( const T& a, const T& b )
. - iavr