Warum kann ich den Gleitkommawert nicht als Vorlagenparameter verwenden?

Wenn ich versuche zu benutzenfloat Als Template-Parameter schreit der Compiler nach diesem Code, währendint funktioniert gut.

Ist es, weil ich nicht verwenden kannfloat als vorlagenparameter?

#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;       
}

Error:

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'

ich lese"Datenstrukturen für Spielprogrammierer" von Ron Penton geht der Autor afloat, aber wenn ich es versuche, scheint es nicht zu kompilieren.

Antworten auf die Frage(9)

Ihre Antwort auf die Frage