10
votes

C ++ Modèle Fonction Valeur par défaut

est-il possible de définir la valeur par défaut pour les variables d'une fonction de modèle en C ++?

Quelque chose comme ci-dessous: P>

template<class T> T sum(T a, T b, T c=????)
{
     return a + b + c;
}


0 commentaires

5 Réponses :


0
votes

Oui!

Cependant, vous devriez au moins avoir une idée de ce que t pourrait être ou qu'il est inutile.

Vous ne pouvez pas définir la valeur par défaut des paramètres de modèle pour les fonctions, c'est-à-dire que cela est interdit. : xxx


0 commentaires

11
votes

Essayez ceci:

template<class T> T sum(T a, T b, T c=T())
{
     return a + b + c;
}


0 commentaires

1
votes

Oui, il suffit d'être un constructeur pour t de toute valeur que vous posez là-bas. Compte tenu du code que vous montrez, je suppose que vous voudriez probablement que cet argument soit 0 . Si vous souhaitez plus d'un argument au constructeur, vous pouvez mettre t (arg1, arg2, arg3) comme valeur par défaut.


0 commentaires

7
votes

Tout dépend des hypothèses que vous pouvez faire sur le type.

template <typename T> T sum( T a, T b, T c = T() ) { return a+b+c; }
template <typename T> T sum2( T a, T b, T c = T(5) ) { return a+b+c; }


1 commentaires

Les arguments par défaut ne sont instanciés que si elles sont utilisées. Ce qui signifie que l'on peut mettre n'importe quelle chose folle qui ne serait pas compatible avec t du tout, ce qui serait bien tant que l'on réussirait un argument explicite.



2
votes

Oui, vous pouvez définir une valeur par défaut.

template <class T> 
T constructThird()
{
    return T(1);
}

template <class T> 
T test(T a, 
       T b, 
       T c = constructThird<T>())
{
    return a + b + c;
}


0 commentaires