Member einem Template hinzufügen
-
Abend,
zunächst mal sorry für den blöden Titel - mir ist kein besserer eingefallen.
Mein Problem: Ich habe eine Vektor Template Klasse:template <class T> class Vector3 { ... };und auf bestimmte Typen von Vektoren (die ich häufig brauche) Typedefs:
typedef Vector3<float> Vec3f; typedef Vector3<double> Vec3d;Jetzt möchte ich den "typdef Typen" Vec3f, Vec3d etc. noch ein paar Konstanten (static const ...) spendieren, z.B. den Nullvektor, den Einheitsvektor in X-Richtung usw.
In meinem Code möchte ich das dann so benutzen:Vec3f v = Vec3f::ZERO; // ZERO ist ein static const Vec3<float> Vec3f v2 = Vec3f::UNITY_X;Aber ich kann ja meinen "typedef Typen" nicht einfach neue Member (ZERO, UNITY_X) hinzufügen. Wie könnte ich das machen, dass meine "spezialisierten" Vector3's diese Konstanten bekommen?
-
Wie wäre es, wenn du die in deine Klasse packst?
Wenn die Member speziell je nach Typ sind, kannst du die Klasse spezialisieren.
-
Also meine Klasse sieht jetzt so aus:
// Vector3.h template <class T> class Vector3 { public: static const Vector3<T> ZERO; ... }; template <class T> const Vector3<T> Vector3<T>::ZERO(0,0,0);Passt das so? Ist das ok, dass die Definition mit im Header steht?
-
Sollte OK sein, ja.
Hab das bisher nur mit atomaren Typen (int, Zeiger etc.) verwendet, aber sehe keinen Grund warum es mit einer Klassen-Instanz nicht gehen sollte.