Lorsque j'essaie de l'utiliser floatcomme paramètre de modèle, le compilateur pleure ce code, alors qu'il intfonctionne correctement.
Est-ce parce que je ne peux pas utiliser floatcomme paramètre de modèle?
#include<iostream>
using namespace std;
template <class T, T defaultValue>
class GenericClass
{
private:
T value;
public:
GenericClass()
{
value = defaultValue;
}
T returnVal()
{
return value;
}
};
int main()
{
GenericClass <int, 10> gcInteger;
GenericClass < float, 4.6f> gcFlaot;
cout << "\n sum of integer is "<<gcInteger.returnVal();
cout << "\n sum of float is "<<gcFlaot.returnVal();
return 0;
}
Erreur:
main.cpp: In function `int main()':
main.cpp:25: error: `float' is not a valid type for a template constant parameter
main.cpp:25: error: invalid type in declaration before ';' token
main.cpp:28: error: request for member `returnVal' in `gcFlaot',
which is of non-class type `int'
Je lis "Structures de données pour les programmeurs de jeux" de Ron Penton, l'auteur passe un float, mais quand je l'essaye, il ne semble pas se compiler.
floatcomme paramètre de modèle non type ? Dans quel chapitre est-ce?