Ho scritto questo semplice programma che utilizza una funzione input che "dovrebbe" accettare qualsiasi tipo di variabile ed ho provato usando un template ma la funzione di tipo template che ha argomento void ma il compilatore dando void alla funzione input dà errore se metto invece un argomento tipo definito da template va bene, non è possibile definire una funzione generica tipo template ma che non riceve argomenti in ingresso??? O sbaglio qualcosa io???
Grazie anticipatamente!!!!
#include<iostream>
#include<math.h>
using namespace std;
template< class T>
T input(void)
{
T n=0;
cout<<"\nInserire un valore : ";
cin>>n;
return n;
}
double hypotenuse(double x, double y);
int smallest(int x, int y, int z);
void instruction(void);
float intTofloat(int x);
void main()
{
double x,y;
cout<<"\nInserire i due cateti per calcolarne l'ipotenusa\n\n";
x = input();
y = input();
cout<<"\nL'ipotenusa = "<<hypotenuse(x,y);
int i1,i2,i3;
cout<<"\nCalcola il più piccolo fra 3 numeri interi \n\n";
i1=input();
i2=input();
i3=input();
cout<<"\nIl più piccolo fra i 3 numeri = "<<smallest(i1,i2,i3);
instruction();
cout<<"\nTrasforma un int in float \n\n";
i1 = input();
cout<<"\nIl numero in float = "<<intTofloat(i1)<<endl;
}
double hypotenuse(double x, double y)
{
return (sqrt(pow(x,2.0)+pow(y,2.0)));
}
int smallest(int x, int y, int z)
{
int small;
small=x;
if(y<small)
small=y;
if(z<small)
small=z;
return small;
}
void instruction(void)
{
cout<<"\nQuesta e' una prova di un'istruzione\n\n";
}
float intTofloat(int x)
{
return ((float)x);
}