#include <iostream>
using namespace std;
template <class X, class Y>
Y big(X a, Y b)
{
if (a > b)
return (a);
else return (b);
}
int main()
{
cout << big(32.8, 9);
}
Ici, j'utilise des modèles dans CPP, donc quand j'appelle la fonction en big
contournant les arguments de double
et int
type, je veux la réponse de retour qui estdouble
. Le type ici, il renvoie 32
au lieu de 32.8
.
Comment obtenir la sortie souhaitée? Comment écrire un type de big
fonction de retour approprié ?
std::max
est mis en œuvre. Le type de retour d'une fonction doit être connu au moment de la compilation en C ++. Vous ne pouvez donc pas faire dépendre ce type de retour de la valeur d'exécution de vos paramètres. C'est pourquoi pour une telle fonction, vous avez besoin des deux paramètres pour avoir le même type (c'est-à-dire, avoir le type X, mais pas Y).