Jetons un coup d'oeil à une fonction et non pas un modèle de fonction.
int add_two(int in)
{
return (in + 2);
}
Le int
avant le nom de la fonction est le type de retour. Si le compilateur ne peut pas déterminer qu'il représente un type, il le signalera comme une erreur. Si vous avez eu une faute de frappe et écrit
imt add_two(int in)
{
return (in + 2);
}
le compilateur se plaindra que imt
est pas un type.
Un modèle de fonction doit également avoir un type de retour. Vous avez:
template<class vecType>
size_type len(vector<vecType> inVector) {
size_type vecSize = inVector.size();
return vecSize;
}
Ici, vous avez size_type
avant que le nom de la fonction. Si le compilateur ne peut pas déterminer que size_type
est bien un type, il se plaindra. Si size_type
est un type connu, le compilateur continuera avec ce type étant le type de retour de la fonction.
Vous pouvez utiliser:
template<class vecType>
typename std::vector<vecType>::size_type len(vector<vecType> inVector) {
...
}
pour laisser le compilateur savoir que std::vector<vecType>
a un type appelé size_type
et la valeur de retour de cette fonction est de ce type. Vous devrez utiliser typename std::vector<vecType>::size_type
puisqu'il s'agit d'un nom de type dépendant. Voir Where and why do I have to put the "template" and "typename" keywords? pour plus sur le sujet.
De plus, vous devez corriger la déclaration de la variable vecSize
dans la fonction.
template<class vecType>
typename std::vector<vecType>::size_type len(vector<vecType> inVector) {
typename std::vector<vecType>::size_type vecSize = inVector.size();
return vecSize;
}
Si vous êtes en mesure d'utiliser un compilateur C++ 11, vous pouvez simplifier la déclaration variable
auto vecSize = inVector.size();
« nom » est un verbe dans ce cas. Cela signifie que 'size_type' n'est pas un nom de type de données. Cela signifie que vous n'avez pas dit au compilateur ce que 'size_type' est. –
'size_type' est généralement attaché à une autre classe, comme' vector :: size_type' – user4581301
Connexes: http://stackoverflow.com/questions/4849632/vectorintsize-type-in-c – user4581301